@maif/react-forms 1.2.12 → 1.2.16

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -72,13 +72,29 @@ export const Example = () => {
72
72
  - `buttonsSelect`: display a buttons group, drawn with the same options than the format `select`
73
73
  - `code`: if the type is `string`, display a code input (draw with [react-ace](https://github.com/securingsincity/react-ace)) (add a props.setRef to get ace editor ref)
74
74
  - `singleLineCode`: renders text input with syntax highlighting (draw with [react-ace](https://github.com/securingsincity/react-ace)) (add a props.setRef to get ace editor ref)
75
- - `markdown`: if the type is `string`, display a markdown input
75
+ - `markdown`: if the type is `string`, display a markdown input. You can add buttons into toolbar by inject a JSX.element thanks to the `actions` property from `props` taking on params the insert function.
76
+ ```javascript
77
+ {
78
+ text: {
79
+ type: type.string,
80
+ format: format.markdown,
81
+ props: {
82
+ actions: (insert) => <button type="button" onClick={() => insert("foo")}>inject foo</button>
83
+ }
84
+ }
85
+ }
86
+ ```
76
87
  - `textarea`: if the type is `string`, display a textarea
77
88
  - `email`: if the type is `string`, display an email input
78
89
  - `password`: if the type is `string`, display a password input
79
90
  - `hidden`: if the type is `string`, add an hidden input in your form
80
- - `form`: if the type is `object`, display a form in your form draw with given schema and flow. The form drawn is collapsable, by default on the first input but with `visibleOnCollapse` you can choose which field will be visble or not.
81
- - **array**: boolean value to display multiple fields with "add" and "remove" buttons (`false` by default)
91
+ - `form`: if the type is `object`, display a form in your form draw with given schema and flow. The form drawn is `collapsable`, you can choose which field will be visble or not by setting up the `visibleOnCollapse` props on subschema element properties. `collapsable` can be a boolean or a function to render JSX (with `rawValues`, `value` & `getValue` params)
92
+ ```javascript
93
+ {
94
+ collapsable: ({rawValue, value, getValue}) => <span>{value.firstname} {value.name}</span>
95
+ }
96
+ ```
97
+ - **array**: boolean value to display multiple fields with "add" and "remove" buttons (`false` by default). You can define `addabledefaultvalue` to ensure the default value for the new input.
82
98
  - **createOption**: if `select` format is choosen, `createOption` property is to render a Creatable component
83
99
  - **onCreateOption**: if `select` format is choosen, `onCreateOption` property is a function called before new option creation
84
100
  ```javascript
@@ -188,6 +204,14 @@ export const Example = () => {
188
204
  }
189
205
  ```
190
206
  - **constraints**: a JSON array of constraints. see [constraints section](#constraints)
207
+ - **item**: In case of the entry is an array, some properties will be applied to the array step but not to the sub-items. In this particular case, you can use `item` property to add following properties (with same signature than the schema properties) to sub-items:
208
+ - **disabled**
209
+ - **visible**
210
+ - **label**
211
+ - **onChange**
212
+ - **onAfterChange**
213
+ - **render**
214
+ - **array**
191
215
 
192
216
  ### Functional properties
193
217
  Some schema properties can be basic value or function which return basic value. This function has an object as param with these following properties :
package/lib/index.css CHANGED
@@ -312,8 +312,8 @@
312
312
  .mrf-content_switch_button_on::before {
313
313
  content: "";
314
314
  cursor: pointer;
315
- width: 21px;
316
- height: 21px;
315
+ width: 20px;
316
+ height: 20px;
317
317
  background-color: var(--form-bg-color, #fff);
318
318
  border-radius: 20px;
319
319
  box-shadow: 1px 0px 5px 0px rgba(0, 0, 0, 0.3);
@@ -335,8 +335,8 @@
335
335
  background-color: var(--form-bg-color, #fff);
336
336
  border-radius: 20px;
337
337
  cursor: pointer;
338
- width: 21px;
339
- height: 21px;
338
+ width: 20px;
339
+ height: 20px;
340
340
  box-shadow: 1px 0px 5px 0px rgba(0, 0, 0, 0.3);
341
341
  }
342
342
 
@@ -356,7 +356,7 @@
356
356
  background-color: var(--form-bg-color, #fff);
357
357
  border-radius: 20px;
358
358
  cursor: pointer;
359
- width: 21px;
359
+ width: 20px;
360
360
  height: 20px;
361
361
  box-shadow: 1px 0px 5px 0px rgba(0, 0, 0, 0.3);
362
362
  }
package/lib/index.d.ts CHANGED
@@ -3,8 +3,7 @@ import * as yup_lib_types from 'yup/lib/types';
3
3
  import * as yup from 'yup';
4
4
  import { AnySchema, StringSchema, NumberSchema, ArraySchema, TestFunction } from 'yup';
5
5
  import Reference from 'yup/lib/Reference';
6
- import * as yup_lib_object from 'yup/lib/object';
7
- import React from 'react';
6
+ import React$1 from 'react';
8
7
 
9
8
  declare const type: {
10
9
  readonly string: "string";
@@ -34,7 +33,7 @@ declare const format: {
34
33
  readonly datetime: "datetime-local";
35
34
  readonly time: "time";
36
35
  };
37
- declare let formatValues: ("array" | "select" | "code" | "markdown" | "textarea" | "email" | "password" | "hidden" | "form" | "buttons" | "singleLineCode" | "datetime-local" | "time")[];
36
+ declare let formatValues: ("email" | "array" | "select" | "code" | "markdown" | "textarea" | "password" | "hidden" | "form" | "buttons" | "singleLineCode" | "datetime-local" | "time")[];
38
37
  declare type Format = typeof formatValues[number];
39
38
 
40
39
  declare type Constraint = (resolver: any, key: string, dependencies: any[]) => AnySchema;
@@ -129,9 +128,9 @@ declare const Collapse: (props: {
129
128
  initCollapsed?: boolean;
130
129
  collapsed?: boolean;
131
130
  errored: boolean;
132
- label?: React.ReactNode;
131
+ label?: React$1.ReactNode;
133
132
  inline?: any;
134
- children: React.ReactNode;
133
+ children: React$1.ReactNode;
135
134
  lineEnd?: boolean;
136
135
  }) => JSX.Element;
137
136
 
@@ -163,7 +162,7 @@ declare const SelectInput: <T extends {
163
162
  disabled?: boolean | undefined;
164
163
  createOption?: boolean | undefined;
165
164
  label?: string | undefined;
166
- placeholder?: React.ReactNode;
165
+ placeholder?: React$1.ReactNode;
167
166
  className: string;
168
167
  }) => JSX.Element;
169
168
 
@@ -214,6 +213,7 @@ declare const MarkdownInput: (props: {
214
213
  className: string;
215
214
  readOnly?: boolean | undefined;
216
215
  onChange?: ((value: string) => void) | undefined;
216
+ actions?: ((inject: (text: string) => void) => JSX.Element) | undefined;
217
217
  }) => JSX.Element;
218
218
 
219
219
  declare function SingleLineCode({ onChange, value, mode, tabSize, readOnly, showLinesNumber, highlightLine, themeStyle }: {
@@ -344,7 +344,49 @@ interface SchemaEntry {
344
344
  visibleOnCollapse?: boolean;
345
345
  addableDefaultValue?: any;
346
346
  collapsed?: boolean;
347
- collapsable?: boolean;
347
+ collapsable?: boolean | ((param: {
348
+ rawValues: {
349
+ [x: string]: any;
350
+ };
351
+ value: any;
352
+ getValue: (key: string) => any;
353
+ }) => JSX.Element);
354
+ item?: ({
355
+ disabled?: boolean | ((prop: {
356
+ rawValues: {
357
+ [x: string]: any;
358
+ };
359
+ value: any;
360
+ informations?: Informations;
361
+ }) => boolean);
362
+ visible?: boolean | ((prop: {
363
+ rawValues: {
364
+ [x: string]: any;
365
+ };
366
+ value: any;
367
+ informations?: Informations;
368
+ }) => boolean);
369
+ label?: React.ReactNode | ((prop: {
370
+ rawValues: {
371
+ [x: string]: any;
372
+ };
373
+ value: any;
374
+ informations?: Informations;
375
+ }) => React.ReactNode);
376
+ onChange?: (param: object) => void;
377
+ onAfterChange?: (obj: {
378
+ entry: string;
379
+ value: object;
380
+ rawValues: object;
381
+ previousValue?: object;
382
+ getValue: (entry: string) => any;
383
+ setValue: (entry: string, value: any) => void;
384
+ onChange: (v: any) => void;
385
+ informations?: Informations;
386
+ }) => void;
387
+ render?: SchemaRenderType;
388
+ array?: boolean;
389
+ });
348
390
  }
349
391
  interface FlowObject {
350
392
  label: string;
@@ -352,25 +394,13 @@ interface FlowObject {
352
394
  collapse: boolean;
353
395
  }
354
396
  declare type Flow = Array<string | FlowObject>;
355
- declare type TFunctionalProperty = <T>(entry: string, prop: T | ((param: {
356
- rawValues: {
357
- [x: string]: any;
358
- };
359
- value: any;
360
- informations?: Informations;
361
- error?: {
362
- [x: string]: any;
363
- };
364
- }) => T), informations?: Informations, error?: {
365
- [x: string]: any;
366
- }) => T;
367
397
  interface Informations {
368
- path: string;
398
+ path?: string;
369
399
  parent?: Informations;
370
400
  index?: number;
371
401
  }
372
- declare const validate: (flow: string[], schema: Schema, value: object) => Promise<yup_lib_object.AssertsShape<yup_lib_object.Assign<yup_lib_object.ObjectShape, yup_lib_object.ObjectShape>>>;
373
- declare const Form: React.ForwardRefExoticComponent<{
402
+
403
+ declare const Form: React$1.ForwardRefExoticComponent<{
374
404
  schema: Schema;
375
405
  flow: Array<string | FlowObject>;
376
406
  value?: object | undefined;
@@ -386,7 +416,6 @@ declare const Form: React.ForwardRefExoticComponent<{
386
416
  style?: object | undefined;
387
417
  className?: string | undefined;
388
418
  options?: Option | undefined;
389
- nostyle: boolean;
390
- } & React.RefAttributes<unknown>>;
419
+ } & React$1.RefAttributes<unknown>>;
391
420
 
392
- export { BooleanInput, CodeInput, Collapse, ConditionnalSchema, Flow, Form, Format, Informations, MarkdownInput, ObjectInput, Schema, SchemaEntry, SchemaRenderType, SelectInput, SelectOption, SingleLineCode, TFunctionalProperty, Type, constraints_d as constraints, format, type, validate };
421
+ export { BooleanInput, CodeInput, Collapse, Form, Format, MarkdownInput, ObjectInput, SelectInput, SelectOption, SingleLineCode, Type, constraints_d as constraints, format, type };
package/lib/index.js CHANGED
@@ -1 +1 @@
1
- import*as e from"yup";import*as t from"react";import r,{forwardRef as n,useState as a,useRef as o,useEffect as l,useCallback as i,useImperativeHandle as s,useMemo as c}from"react";import{yupResolver as m}from"@hookform/resolvers/yup";import u from"classnames";import p from"fast-deep-equal";import f from"prop-types";import{useFormContext as d,useController as h,useWatch as b,useForm as v,FormProvider as y,Controller as g,useFieldArray as O}from"react-hook-form";import j from"lodash.debounce";import{AdapterDateFns as E}from"@mui/x-date-pickers/AdapterDateFns";import{LocalizationProvider as w}from"@mui/x-date-pickers/LocalizationProvider";import{DatePicker as x}from"@mui/x-date-pickers/DatePicker";import{TimePicker as k}from"@mui/x-date-pickers/TimePicker";import{DateTimePicker as _}from"@mui/x-date-pickers/DateTimePicker";import C from"@mui/material/TextField";import N from"react-select/creatable";import V from"react-select";import S from"object-hash";import{EditorState as P}from"@codemirror/state";import{javascript as T}from"@codemirror/lang-javascript";import{html as M}from"@codemirror/lang-html";import{json as W}from"@codemirror/lang-json";import{css as z}from"@codemirror/lang-css";import{markdown as A}from"@codemirror/lang-markdown";import{EditorView as F,highlightSpecialChars as D,drawSelection as L,dropCursor as $,highlightActiveLine as R,keymap as I}from"@codemirror/view";import{history as q,historyKeymap as B}from"@codemirror/history";import{foldGutter as H,foldKeymap as J}from"@codemirror/fold";import{defaultKeymap as U,indentWithTab as K}from"@codemirror/commands";import{indentUnit as Y}from"@codemirror/language";import{lineNumbers as G,highlightActiveLineGutter as Q}from"@codemirror/gutter";import{bracketMatching as X}from"@codemirror/matchbrackets";import{closeBrackets as Z,closeBracketsKeymap as ee}from"@codemirror/closebrackets";import{highlightSelectionMatches as te,searchKeymap as re}from"@codemirror/search";import{autocompletion as ne,completionKeymap as ae}from"@codemirror/autocomplete";import{commentKeymap as oe}from"@codemirror/comment";import{rectangularSelection as le}from"@codemirror/rectangular-selection";import{defaultHighlightStyle as ie}from"@codemirror/highlight";import{lintKeymap as se}from"@codemirror/lint";import{oneDark as ce}from"@codemirror/theme-one-dark";import me from"showdown";import"@fortawesome/fontawesome-free/css/all.css";import"highlight.js/styles/monokai.css";import ue from"highlight.js/lib/core";import pe from"react-tooltip";import{v4 as fe}from"uuid";const de={string:"string",number:"number",bool:"bool",date:"date",object:"object",file:"file",json:"json"};Object.values(de);const he={array:"array",select:"select",code:"code",markdown:"markdown",text:"textarea",textarea:"textarea",email:"email",password:"password",hidden:"hidden",form:"form",buttonsSelect:"buttons",singleLineCode:"singleLineCode",datetime:"datetime-local",time:"time"};Object.values(he);const be=(e="Value required")=>t=>t.required(e),ve=(e="That is not a valid url")=>t=>t.url(e),ye=(e="That is not a valid email")=>t=>t.email(e),ge=(e="That is not a valid uuid")=>t=>t.uuid(e),Oe=(e=/.*/,t="This field does not match the pattern")=>r=>r.matches(e,{message:t,excludeEmptyString:!0}),je=(e,t="Min value is required")=>r=>r.min(Fe(e),t),Ee=(e,t="Max value is required")=>r=>r.max(Fe(e),t),we=(e="Positive value is required")=>t=>t.positive(e),xe=(e="Negative value is required")=>t=>t.negative(e),ke=(e="an integer please")=>t=>t.integer(e),_e=(e,t=`This field must be less than ${e}`)=>(r,n,a)=>("number"!=typeof e&&a.push([n,e]),r.lessThan(Fe(e),t)),Ce=(e,t=`This field must be more than ${e}`)=>(r,n,a)=>("number"!=typeof e&&a.push([n,e]),r.moreThan(Fe(e),t)),Ne=(e,t=`The size of this collection must be ${e}`)=>r=>r.length(Fe(e),t),Ve=(e,t="Unsupported File Format")=>r=>{const n=e.map((e=>e.toLowerCase()));return r.test("supportedFormat",t,(e=>!e.length||n.some((t=>e[0].type.toLowerCase().includes(t)))))},Se=(e,t="Unsupported File Format")=>r=>{const n=e.map((e=>e.toLowerCase()));return r.test("unsupportedFormat",t,(e=>!e.length||n.some((t=>e[0].type.toLowerCase().includes(t)))))},Pe=(e,t=`size is excedeed ${e}`)=>r=>r.test("fileSize",t,(t=>!t.length||t[0].size<=Fe(e))),Te=(e,t="Test failed",r)=>n=>n.test(e,t,r),Me=(e,t,r=[],n=[])=>(a,o,l)=>{const i=r.reduce(((e,t)=>t(e,o,l)),a),s=n.reduce(((e,t)=>t(e,o,l)),a);return a.when(e,{is:t,then:i,otherwise:s})},We=(e,t=`This value must be one of ${e.join(", ")}`)=>r=>r.oneOf(e.map(Fe),t),ze=(e,t=`This value can't include the following values ${e.join(", ")}`)=>r=>r.test("blacklist",t,(t=>!e.some((e=>(t||"").includes(e))))),Ae=t=>e.ref(t),Fe=e=>(null==e?void 0:e.ref)?Ae(e.ref):e,De={required:({message:e="Value required"})=>be(e),url:({message:e="That is not a valid url"})=>ve(e),email:({message:e="That is not a valid email"})=>ye(e),uuid:({message:e="That is not a valid uuid"})=>ge(e),matches:({regexp:e=/.*/,message:t="This field does not match the pattern"})=>Oe(e,t),min:({ref:e,message:t="Min value is required"})=>je(e,t),max:({ref:e,message:t="Max value is required"})=>Ee(e,t),positive:({message:e="Positive value is required"})=>we(e),negative:({message:e="Negative value is required"})=>xe(e),integer:({message:e="an integer please"})=>ke(e),lessThan:({ref:e,message:t=`This field must be less than ${e}`})=>_e(e,t),moreThan:({ref:e,message:t=`This field must be more than ${e}`})=>Ce(e,t),length:({ref:e,message:t=`The size of this collection must be ${e}`})=>Ne(e,t),supportedFormat:({arrayOfValues:e,message:t="Unsupported File Format"})=>Ve(e,t),unsupportedFormat:({arrayOfValues:e,message:t="Unsupported File Format"})=>Se(e,t),maxSize:({ref:e,message:t=`size is excedeed ${e}`})=>Pe(e,t),test:e=>Te(e.name,e.message,e.test),when:({ref:e,test:t,then:r=[],otherwise:n=[]})=>Me(e,t,r,n),oneOf:({arrayOfValues:e,message:t=`This value must be one of ${e.join(", ")}`})=>We(e,t),blacklist:({arrayOfValues:e,message:t=`This value can't include the following values ${e.join(", ")}`})=>ze(e,t),ref:e=>Ae(e.ref)};var Le=Object.freeze({__proto__:null,required:be,url:ve,email:ye,uuid:ge,matches:Oe,min:je,max:Ee,positive:we,negative:xe,integer:ke,lessThan:_e,moreThan:Ce,length:Ne,supportedFormat:Ve,unsupportedFormat:Se,maxSize:Pe,test:Te,when:Me,oneOf:We,blacklist:ze,ref:Ae,jsonConstraints:De});function $e(){return $e=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},$e.apply(this,arguments)}function Re(e,t){if(null==e)return{};var r,n,a=function(e,t){if(null==e)return{};var r,n,a={},o=Object.keys(e);for(n=0;n<o.length;n++)r=o[n],t.indexOf(r)>=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n<o.length;n++)r=o[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var Ie=n((function(e,t){var n=e.color,a=void 0===n?"currentColor":n,o=e.size,l=void 0===o?24:o,i=Re(e,["color","size"]);return r.createElement("svg",$e({ref:t,xmlns:"http://www.w3.org/2000/svg",width:l,height:l,viewBox:"0 0 24 24",fill:"none",stroke:a,strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},i),r.createElement("line",{x1:"12",y1:"2",x2:"12",y2:"6"}),r.createElement("line",{x1:"12",y1:"18",x2:"12",y2:"22"}),r.createElement("line",{x1:"4.93",y1:"4.93",x2:"7.76",y2:"7.76"}),r.createElement("line",{x1:"16.24",y1:"16.24",x2:"19.07",y2:"19.07"}),r.createElement("line",{x1:"2",y1:"12",x2:"6",y2:"12"}),r.createElement("line",{x1:"18",y1:"12",x2:"22",y2:"12"}),r.createElement("line",{x1:"4.93",y1:"19.07",x2:"7.76",y2:"16.24"}),r.createElement("line",{x1:"16.24",y1:"7.76",x2:"19.07",y2:"4.93"}))}));function qe(){return qe=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},qe.apply(this,arguments)}function Be(e,t){if(null==e)return{};var r,n,a=function(e,t){if(null==e)return{};var r,n,a={},o=Object.keys(e);for(n=0;n<o.length;n++)r=o[n],t.indexOf(r)>=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n<o.length;n++)r=o[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}Ie.propTypes={color:f.string,size:f.oneOfType([f.string,f.number])},Ie.displayName="Loader";var He=n((function(e,t){var n=e.color,a=void 0===n?"currentColor":n,o=e.size,l=void 0===o?24:o,i=Be(e,["color","size"]);return r.createElement("svg",qe({ref:t,xmlns:"http://www.w3.org/2000/svg",width:l,height:l,viewBox:"0 0 24 24",fill:"none",stroke:a,strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},i),r.createElement("path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"}),r.createElement("polyline",{points:"17 8 12 3 7 8"}),r.createElement("line",{x1:"12",y1:"3",x2:"12",y2:"15"}))}));function Je(){return Je=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},Je.apply(this,arguments)}function Ue(e,t){if(null==e)return{};var r,n,a=function(e,t){if(null==e)return{};var r,n,a={},o=Object.keys(e);for(n=0;n<o.length;n++)r=o[n],t.indexOf(r)>=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n<o.length;n++)r=o[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}He.propTypes={color:f.string,size:f.oneOfType([f.string,f.number])},He.displayName="Upload";var Ke=n((function(e,t){var n=e.color,a=void 0===n?"currentColor":n,o=e.size,l=void 0===o?24:o,i=Ue(e,["color","size"]);return r.createElement("svg",Je({ref:t,xmlns:"http://www.w3.org/2000/svg",width:l,height:l,viewBox:"0 0 24 24",fill:"none",stroke:a,strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},i),r.createElement("polyline",{points:"6 9 12 15 18 9"}))}));function Ye(){return Ye=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},Ye.apply(this,arguments)}function Ge(e,t){if(null==e)return{};var r,n,a=function(e,t){if(null==e)return{};var r,n,a={},o=Object.keys(e);for(n=0;n<o.length;n++)r=o[n],t.indexOf(r)>=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n<o.length;n++)r=o[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}Ke.propTypes={color:f.string,size:f.oneOfType([f.string,f.number])},Ke.displayName="ChevronDown";var Qe=n((function(e,t){var n=e.color,a=void 0===n?"currentColor":n,o=e.size,l=void 0===o?24:o,i=Ge(e,["color","size"]);return r.createElement("svg",Ye({ref:t,xmlns:"http://www.w3.org/2000/svg",width:l,height:l,viewBox:"0 0 24 24",fill:"none",stroke:a,strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},i),r.createElement("polyline",{points:"18 15 12 9 6 15"}))}));function Xe(){return Xe=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},Xe.apply(this,arguments)}function Ze(e,t){if(null==e)return{};var r,n,a=function(e,t){if(null==e)return{};var r,n,a={},o=Object.keys(e);for(n=0;n<o.length;n++)r=o[n],t.indexOf(r)>=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n<o.length;n++)r=o[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}Qe.propTypes={color:f.string,size:f.oneOfType([f.string,f.number])},Qe.displayName="ChevronUp";var et=n((function(e,t){var n=e.color,a=void 0===n?"currentColor":n,o=e.size,l=void 0===o?24:o,i=Ze(e,["color","size"]);return r.createElement("svg",Xe({ref:t,xmlns:"http://www.w3.org/2000/svg",width:l,height:l,viewBox:"0 0 24 24",fill:"none",stroke:a,strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},i),r.createElement("polyline",{points:"3 6 5 6 21 6"}),r.createElement("path",{d:"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6m3 0V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2"}),r.createElement("line",{x1:"10",y1:"11",x2:"10",y2:"17"}),r.createElement("line",{x1:"14",y1:"11",x2:"14",y2:"17"}))}));et.propTypes={color:f.string,size:f.oneOfType([f.string,f.number])},et.displayName="Trash2";const tt=({onChange:e,value:t,readOnly:n,className:a,errorDisplayed:o})=>{const l=t=>{n||null==e||e(t)};let i=u("mrf-content_switch",a,{"mrf-content_switch_button_on":!!t,"mrf-content_switch_button_off":!t&&null!==t,"mrf-content_switch_button_null":null===t,"mrf-cursor_pointer":!n,"mrf-cursor_not_allowed":n,"mrf-input__invalid":!!o}),s=()=>l(!0);return t&&(s=()=>l(!1)),r.createElement("input",{type:"checkbox",className:i,onChange:s})};function rt(){return rt=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},rt.apply(this,arguments)}function nt(e,t){if(null==e)return{};var r,n,a=function(e,t){if(null==e)return{};var r,n,a={},o=Object.keys(e);for(n=0;n<o.length;n++)r=o[n],t.indexOf(r)>=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n<o.length;n++)r=o[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var at=n((function(e,t){var n=e.color,a=void 0===n?"currentColor":n,o=e.size,l=void 0===o?24:o,i=nt(e,["color","size"]);return r.createElement("svg",rt({ref:t,xmlns:"http://www.w3.org/2000/svg",width:l,height:l,viewBox:"0 0 24 24",fill:"none",stroke:a,strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},i),r.createElement("path",{d:"M17.94 17.94A10.07 10.07 0 0 1 12 20c-7 0-11-8-11-8a18.45 18.45 0 0 1 5.06-5.94M9.9 4.24A9.12 9.12 0 0 1 12 4c7 0 11 8 11 8a18.5 18.5 0 0 1-2.16 3.19m-6.72-1.07a3 3 0 1 1-4.24-4.24"}),r.createElement("line",{x1:"1",y1:"1",x2:"23",y2:"23"}))}));function ot(){return ot=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},ot.apply(this,arguments)}function lt(e,t){if(null==e)return{};var r,n,a=function(e,t){if(null==e)return{};var r,n,a={},o=Object.keys(e);for(n=0;n<o.length;n++)r=o[n],t.indexOf(r)>=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n<o.length;n++)r=o[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}at.propTypes={color:f.string,size:f.oneOfType([f.string,f.number])},at.displayName="EyeOff";var it=n((function(e,t){var n=e.color,a=void 0===n?"currentColor":n,o=e.size,l=void 0===o?24:o,i=lt(e,["color","size"]);return r.createElement("svg",ot({ref:t,xmlns:"http://www.w3.org/2000/svg",width:l,height:l,viewBox:"0 0 24 24",fill:"none",stroke:a,strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},i),r.createElement("path",{d:"M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z"}),r.createElement("circle",{cx:"12",cy:"12",r:"3"}))}));it.propTypes={color:f.string,size:f.oneOfType([f.string,f.number])},it.displayName="Eye";const st=e=>{const[t,n]=a(e.initCollapsed||e.collapsed),o=e=>{e&&e.stopPropagation(),n(!t)};return r.createElement("div",null,r.createElement("hr",{className:u({"mrf-collapse_error":e.errored})}),r.createElement("div",{className:"mrf-cursor_pointer mrf-flex mrf-jc_between",onClick:o},r.createElement("span",{className:u("mrf-collapse_label",{"mrf-collapse_error":e.errored})},e.label),r.createElement("button",{type:"button",className:u("mrf-btn","mrf-btn_sm","mrf-ml_5",{"mrf-collapse_error":e.errored}),onClick:o},!!t&&r.createElement(it,{size:16}),!t&&r.createElement(at,{size:16}))),r.createElement("div",{className:u("mrf-ml_10",{"mrf-display__none":!!t,"mrf-flex":!!e.inline,"mrf-collapse__inline":!!e.inline})},e.children),e.lineEnd&&r.createElement("hr",null))};function ct(e){return null==e?ut:mt(e)}const mt=e=>({map:t=>ct(t(e)),flatMap:t=>ct(t(e)).getOrElse(ut),fold:(t,r)=>r(e),orElse:()=>ct(e),getOrElse:()=>e,getOrNull:()=>e,isDefined:()=>!0,exists:t=>ct(t(e)).isDefined()}),ut={map:()=>ut,flatMap:()=>ut,fold:e=>e(),orElse:e=>ct(e),getOrElse:e=>e,getOrNull:()=>{},isDefined:()=>!1,exists:()=>!1},pt=e=>Boolean(e&&"function"==typeof e.then),ft=e=>e.some(Array.isArray)?ft(e.flat()):e;function dt(e){return null!=e}const ht=e=>e&&Array.isArray(e)?e.map(ht):e&&"object"==typeof e?Object.fromEntries(Object.entries(e).map((([e,t])=>pt(t)?[e,`promise-${e}`]:"object"==typeof t?[e,ht(t)]:[e,t]))):e,bt=e=>S(ht(e)),vt=(e,t)=>{const r=o(!0),n=o(t);l((()=>{if(r.current)return e(),void(r.current=!1);bt(t)!==bt(n.current)&&(n.current=Object.assign({},t),e())}),t)},yt=(e,t=[],r=!1)=>{if(null===e||!e)return null;if(r)return ct(e).map((e=>(Array.isArray(e)?e||[]:"object"==typeof e?Object.values(e):e).map((e=>yt(e,t,!1))))).getOrElse([]);const n=ct(t.find((t=>p(t.value,e))));return n.getOrElse({label:n.map((e=>e.label)).getOrElse((null==e?void 0:e.label)||("object"==typeof e?JSON.stringify(e):e)),value:n.map((e=>e.value)).getOrElse((null==e?void 0:e.value)||e)})},gt=e=>{const{getValues:t}=d();function n(t){const r=e.transformer?"function"==typeof e.transformer?e.transformer(t):{label:t[e.transformer.label],value:t[e.transformer.value]}:t;return{label:(null==r?void 0:r.label)||("object"==typeof r?JSON.stringify(r):r),value:(null==r?void 0:r.value)||t}}const o=(e.possibleValues||[]).map((e=>n(e))),[i,s]=a(!0),[c,m]=a(o),[p,f]=a();l((()=>{!i&&c.length&&f(yt(e.value||e.defaultValue,c,e.isMulti))}),[e.value,c,e.defaultValue,i]),l((()=>{if(e.optionsFrom){if(ct(e.fetchCondition).map((e=>e())).getOrElse(!0)){let r;if(s(!0),pt(e.optionsFrom))r=e.optionsFrom;else if("function"==typeof e.optionsFrom){const n=e.optionsFrom({rawValues:t(),value:t(e.id)});r=pt(n)?n:e.httpClient(n,"GET").then((e=>e.json()))}else r=e.httpClient(e.optionsFrom,"GET").then((e=>e.json()));r.then((e=>e.map((e=>n(e))))).then((e=>{m(e),f(e.find((e=>Array.isArray(p)?p.find((t=>t.value===e.value)):e.value===(p?p.value:p)))||null),s(!1)}))}}else m((e.possibleValues||[]).map((e=>n(e)))),setTimeout((()=>s(!1)),250)}),[e.optionsFrom,e.possibleValues]);const h=t=>{var r,n;f(t),e.isMulti?null===(r=null==e?void 0:e.onChange)||void 0===r||r.call(e,t.map((e=>e.value))):null===(n=null==e?void 0:e.onChange)||void 0===n||n.call(e,null==t?void 0:t.value)},b=(t,r)=>{const n=ct(r).map((e=>e(t))).flatMap((t=>{return r=t,e.transformer?"function"==typeof e.transformer?ct(e.transformer(r)):mt({label:r[e.transformer.label],value:r[e.transformer.value]}):ut;var r})).getOrElse(yt(t,c));m([...c,n]),e.isMulti?h([...p,n]):h(n)};return e.buttons?r.createElement("div",{style:{display:"flex"}},c.map(((t,n)=>{const a=!!p&&(e.isMulti?p.includes(t):t.value===p.value);return r.createElement("button",{key:n,type:"button",disabled:e.disabled,className:u(e.className,"mrf-btn mrf-btn_grey mrf-ml_5",{active:a}),onClick:()=>(t=>{if(e.isMulti){const e=p;return e.includes(t)?h(e.filter((e=>e.value!==t.value))):h([...e,t])}return h(t)})(t)},t.label)}))):e.createOption?r.createElement(N,Object.assign({},e,{name:`${e.label}-search`,isLoading:i,value:p,isDisabled:i||e.disabled,placeholder:e.placeholder,onChange:h,options:c,onCreateOption:t=>b(t,e.onCreateOption),classNamePrefix:"react-form-select",className:e.className})):r.createElement(V,Object.assign({},e,{name:`${e.label}-search`,isLoading:i,value:p,defaultValue:p,isDisabled:i||e.disabled,placeholder:e.placeholder,options:c,onChange:h,classNamePrefix:"react-form-select",className:e.className}))};function Ot(){return Ot=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},Ot.apply(this,arguments)}function jt(e,t){if(null==e)return{};var r,n,a=function(e,t){if(null==e)return{};var r,n,a={},o=Object.keys(e);for(n=0;n<o.length;n++)r=o[n],t.indexOf(r)>=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n<o.length;n++)r=o[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var Et=n((function(e,t){var n=e.color,a=void 0===n?"currentColor":n,o=e.size,l=void 0===o?24:o,i=jt(e,["color","size"]);return r.createElement("svg",Ot({ref:t,xmlns:"http://www.w3.org/2000/svg",width:l,height:l,viewBox:"0 0 24 24",fill:"none",stroke:a,strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},i),r.createElement("circle",{cx:"12",cy:"12",r:"10"}),r.createElement("line",{x1:"12",y1:"8",x2:"12",y2:"16"}),r.createElement("line",{x1:"8",y1:"12",x2:"16",y2:"12"}))}));Et.propTypes={color:f.string,size:f.oneOfType([f.string,f.number])},Et.displayName="PlusCircle";const wt=e=>{const[r,n]=a({});l((()=>{n(Object.fromEntries(Object.entries(e.value||{}).map((([e,t],r)=>[Date.now()+r,{key:e,value:t}]))))}),[]),l((()=>{if(e.value){const t=e.value||{},a=Object.entries(r||{}).reduce(((e,[t,r])=>r.key?Object.assign(Object.assign({},e),{[r.key]:r.value}):e),{});p(t,a)||n(Object.fromEntries(Object.entries(e.value||{}).map((([e,t],r)=>[Date.now()+r,{key:e,value:t}]))))}}),[e.value]);const o=t=>{var r;null===(r=null==e?void 0:e.onChange)||void 0===r||r.call(e,Object.values(t).reduce(((e,t)=>Object.assign(Object.assign({},e),{[t.key]:t.value})),{}))},i=()=>{const t=e.defaultKeyValue||{key:"",value:""},a=Object.assign(Object.assign({},r),{[Date.now()]:t});n(a),o(a)};return t.createElement("div",{className:e.className},0===Object.keys(r||{}).length&&t.createElement("button",{disabled:e.disabled,type:"button",className:"mrf-flex mrf-btn mrf-btn_blue mrf-btn_sm",onClick:()=>{if(!r||0===Object.keys(r).length){const t=Object.assign(Object.assign({},r),{[Date.now()]:e.defaultKeyValue||{key:"",value:""}});n(t),o(t)}}},t.createElement(Et,null)),Object.entries(r||{}).map((([a,{key:l,value:s}],c)=>t.createElement("div",{className:"mrf-flex mrf-mt_5",key:c},t.createElement("input",{disabled:e.disabled,type:"text",className:"mrf-w_50 mrf-input",placeholder:e.placeholderKey,value:l,onChange:e=>((e,t)=>{const a=Object.assign(Object.assign({},r),{[e]:{key:t,value:r[e].value}});n(a),o(a)})(a,e.target.value)}),t.createElement("input",{disabled:e.disabled,type:"text",className:"mrf-w_50 mrf-input",placeholder:e.placeholderValue,value:s,onChange:e=>((e,t)=>{const a=Object.assign(Object.assign({},r),{[e]:{key:r[e].key,value:t}});n(a),o(a)})(a,e.target.value)}),t.createElement("button",{disabled:e.disabled,type:"button",className:"mrf-flex mrf-btn mrf-btn_red mrf-btn_sm mrf-ml_10",onClick:()=>(e=>{const t=Object.fromEntries(Object.entries(r).filter((([t,r])=>t!==e)));n(t),o(t)})(a)},t.createElement(Et,null)),c===Object.keys(r).length-1&&t.createElement("button",{disabled:e.disabled,type:"button",className:"mrf-flex mrf-btn mrf-btn_blue mrf-btn_sm mrf-ml_5",onClick:i},t.createElement(Et,null))))))},xt={javascript:T,css:z,json:W,html:M,markdown:A};function kt(e,t,r=1,n=!1,a=!0,o=!1,l={height:"-1",minHeight:"300px",maxHeight:"-1",width:"-1",minWidth:"-1",maxWidth:"-1"},i,s){const c=F.theme({"&":Object.assign({},l)}),m=[a?G():G({formatNumber:()=>""}),Q(),D(),q(),xt[t](),H(),L(),$(),P.allowMultipleSelections.of(!0),ie.fallback,X(),Z(),ne(),le(),o?R():void 0,te(),I.of([...ee,...U,...re,...B,...J,...oe,...ae,...se,K]),ce,c,P.tabSize.of(r),Y.of(" ".repeat(r))].filter((e=>!!e)),u=P.create({extensions:[...m,F.updateListener.of((e=>{try{if(e.docChanged){const t=e.state.doc.toString();null==i||i(t)}}catch(e){}})),F.editable.of(!n)],doc:null==s?"":"object"==typeof s?s.value:s});return new F({state:u,parent:e})}function _t({onChange:e,value:t,mode:n="javascript",tabSize:i=2,readOnly:s=!1,showLinesNumber:c=!0,highlightLine:m=!1,themeStyle:u={height:"-1",minHeight:"300px",maxHeight:"-1",width:"-1",minWidth:"-1",maxWidth:"-1"},className:p,setRef:f}){const d=o(),[h,b]=a();return l((()=>{const r=kt(d.current,n,i,s,c,m,u,e,t);d.current.addEventListener("keydown",(e=>{e.stopImmediatePropagation()})),f&&f(r),r.dispatch({changes:{from:0,to:r.state.doc.length,insert:null==t?"":"object"==typeof t?JSON.stringify(t,null,2):t}}),b(r)}),[]),l((()=>{h&&("object"==typeof t?JSON.stringify(t,null,2):t)!==h.state.doc.toString()&&h.dispatch({changes:{from:0,to:h.state.doc.length,insert:null==t?"":"object"==typeof t?JSON.stringify(t,null,2):t}})}),[t]),r.createElement("div",{className:p,ref:d})}const Ct=new me.Converter({omitExtraWLInCodeBlocks:!0,ghCompatibleHeaderId:!0,parseImgDimensions:!0,simplifiedAutoLink:!0,tables:!0,tasklists:!0,requireSpaceBeforeHeadingText:!0,ghMentions:!0,emoji:!0,ghMentionsLink:"/{u}"}),Nt=e=>{const[t,n]=a(e.preview||!1),i=o();l((()=>{t&&c()}),[t,e.value]);const s=[{name:"Add header",icon:"heading",inject:e=>e?[{from:e.from,insert:"# "}]:"#"},{name:"Add bold text",icon:"bold",inject:e=>e?[{from:e.from,insert:"**"},{from:e.to,insert:"**"}]:"** **"},{name:"Add italic text",icon:"italic",inject:e=>e?[{from:e.from,insert:"*"},{from:e.to,insert:"*"}]:"* *"},{name:"Add strikethrough text",icon:"strikethrough",inject:e=>e?[{from:e.from,insert:"~~"},{from:e.to,insert:"~~"}]:"~~ ~~"},{name:"Add link",icon:"link",inject:e=>e?[{from:e.from,insert:"["},{from:e.to,insert:"](url)"}]:"[ ](url)"},{name:"Add code",icon:"code",inject:e=>e?[{from:e.from,insert:"```\n"},{from:e.to,insert:"\n```\n"}]:"```\n\n```\n"},{name:"Add quotes",icon:"quote-right",inject:e=>e?[{from:e.from,insert:"> "}]:"> "},{name:"Add image",icon:"image",inject:e=>e?[{from:e.from,insert:"!["},{from:e.to,insert:"](image-url)"}]:"![ ](image-url)"},{name:"Add unordered list",icon:"list-ul",inject:e=>e?[{from:e.from,insert:"* "}]:"* "},{name:"Add ordered list",icon:"list-ol",inject:e=>e?[{from:e.from,insert:"1. "}]:"1. "},{name:"Add check list",icon:"tasks",inject:e=>e?[{from:e.from,insert:"* [ ] "}]:"* [ ] "}],c=()=>{const e=[...document.getElementsByClassName("mrf-preview")];e.length>0&&[...e[0].querySelectorAll("pre code")].forEach((e=>ue.highlightElement(e)))};return r.createElement("div",{className:u(e.className)},!e.readOnly&&r.createElement("div",{style:{marginBottom:10}},r.createElement("div",null,r.createElement("div",null,r.createElement("button",{type:"button",className:"mrf-btn mrf-btn_sm",style:{color:t?"white":"#7f96af",backgroundColor:t?"#7f96af":"white"},onClick:()=>n(!1)},"Write"),r.createElement("button",{type:"button",className:"mrf-btn mrf-btn_sm mrf-ml_5",style:{color:t?"#7f96af":"white",backgroundColor:t?"white":"#7f96af"},onClick:()=>n(!0)},"Preview"))),r.createElement("div",{className:"mrf-flex mrf-flexWrap"},s.map(((e,t)=>r.createElement("button",{type:"button",className:u("mrf-btn_for_descriptionToolbar"),"aria-label":e.name,title:e.name,key:`toolbar-btn-${t}`,onClick:()=>{const t=i.current,r=t.state.selection.ranges;1===r.length&&r[0].from===r[0].to?t.dispatch({changes:{from:0,to:t.state.doc.length,insert:t.state.doc.toString()+e.inject()}}):t.dispatch(t.state.changeByRange((t=>({changes:e.inject(t),range:t}))))}},r.createElement("i",{className:`fas fa-${e.icon}`})))))),!t&&r.createElement(_t,Object.assign({},e,{setRef:e=>i.current=e})),t&&r.createElement("div",{className:"mrf-preview",dangerouslySetInnerHTML:{__html:Ct.makeHtml(e.value||"")}}))};function Vt({onChange:e,value:t,mode:n="javascript",tabSize:a=2,readOnly:i=!1,showLinesNumber:s=!0,highlightLine:c=!1,themeStyle:m={height:"-1",minHeight:"-1",maxHeight:"-1",width:"-1",minWidth:"-1",maxWidth:"-1"}}){const u=o();return l((()=>{kt(u.current,n,a,i,s,c,m,(t=>{null==e||e(t.replace(/\n/g,""))}),t),u.current.addEventListener("keydown",(e=>{e.stopImmediatePropagation()}))}),[]),r.createElement("div",{ref:u,style:{flex:1,overflow:"hidden"}})}const St={[de.string]:t=>e.string().nullable().optional().typeError(t||"Value must be a string"),[de.number]:t=>e.number().nullable().optional().transform((e=>isNaN(e)?null:e)).typeError(t||"Value must be a number"),[de.bool]:()=>e.bool().nullable().optional(),[de.object]:()=>e.object().nullable().optional(),[de.date]:t=>e.date().nullable().optional().typeError(t||"Value must be a date"),[de.file]:()=>e.mixed(),[de.json]:()=>e.mixed()},Pt=(t,r,n,a)=>{const{constraints:o=[]}=t;if(t.array||t.isMulti){let l,i=e.array();if(t.schema){const r=[];l=e.object().shape(Mt(t.flow||Object.keys(t.schema),t.schema,r,a).shape,r),i=i.of(e.object().shape({value:l}))}return o.reduce(((e,t)=>Tt(t,e,r,n)),i)}if(t.type===de.object&&t.schema){if(!Object.keys(t.schema).length)return e.object();const l=Mt(t.flow||Object.keys(t.schema),t.schema,n,a);return o.reduce(((e,t)=>Tt(t,e,r,n)),e.object().shape(l.shape,n))}if(t.type===de.object&&t.conditionalSchema){const{schema:l,flow:i}=ct(t.conditionalSchema).map((e=>{const t=ct(e.ref).map((e=>a[e])).getOrNull();return ct(e.switch.find((e=>"function"==typeof e.condition?e.condition({rawValues:a,ref:t}):e.condition===t))).orElse(e.switch.find((e=>e.default))).getOrElse({schema:{},flow:[]})})).getOrElse({schema:{},flow:[]}),s=Mt(i||Object.keys(l),l,n,a);return o.reduce(((e,t)=>Tt(t,e,r,n)),e.object().shape(s.shape,n))}return o.reduce(((e,t)=>Tt(t,e,r,n)),St[t.type]())},Tt=(e,t,r,n)=>"function"==typeof e?e(t,r,n):De[e.type](e)(t,r,n),Mt=(e,t,r=[],n={})=>{if(!Object.keys(t).length)return{shape:{},dependencies:r};const a=(e||Object.keys(t)).reduce(((e,a)=>{if("object"==typeof a)return Object.assign(Object.assign({},e),Mt(a.flow,t,r,n).shape);if(!t[a])return e;const o=Pt(t[a],a,r,n);return Object.assign(Object.assign({},e),{[a]:o})}),{});return{shape:a,dependencies:r}};function Wt(){return Wt=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},Wt.apply(this,arguments)}function zt(e,t){if(null==e)return{};var r,n,a=function(e,t){if(null==e)return{};var r,n,a={},o=Object.keys(e);for(n=0;n<o.length;n++)r=o[n],t.indexOf(r)>=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n<o.length;n++)r=o[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var At=n((function(e,t){var n=e.color,a=void 0===n?"currentColor":n,o=e.size,l=void 0===o?24:o,i=zt(e,["color","size"]);return r.createElement("svg",Wt({ref:t,xmlns:"http://www.w3.org/2000/svg",width:l,height:l,viewBox:"0 0 24 24",fill:"none",stroke:a,strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},i),r.createElement("circle",{cx:"12",cy:"12",r:"10"}),r.createElement("path",{d:"M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3"}),r.createElement("line",{x1:"12",y1:"17",x2:"12.01",y2:"17"}))}));At.propTypes={color:f.string,size:f.oneOfType([f.string,f.number])},At.displayName="HelpCircle";const Ft=({entry:e,children:t,render:n,functionalProperty:a,step:o,informations:l,className:i})=>{const{formState:s}=d();if("object"==typeof e)return t;const c=e.split(".").reduce(((e,t)=>e&&e[t]),s.errors),m=e.split(".").reduce(((e,t)=>e&&e[t]),s.dirtyFields),p=e.split(".").reduce(((e,t)=>e&&e[t]),s.touchedFields),f=s.isSubmitted||m||p;if(!a(e,void 0===(null==o?void 0:o.visible)||o.visible,l,c))return null;const h=a(e,null===(null==o?void 0:o.label)?null:(null==o?void 0:o.label)||e,l),b=fe();return n?n({entry:e,label:h,error:c,help:null==o?void 0:o.help,children:t}):r.createElement("div",{className:`mrf-mt_10 ${i||""}`,style:{position:"relative"}},h&&r.createElement("label",{className:"mrf-flex mrf-ai_center mrf-mb_5",htmlFor:e},r.createElement("span",null,h),(null==o?void 0:o.help)&&r.createElement(r.Fragment,null,r.createElement(pe,{html:!0,place:"bottom",id:b}),r.createElement("span",{className:"mrf-flex mrf-ai_center","data-html":!0,"data-tip":null==o?void 0:o.help,"data-for":b},r.createElement(At,{style:{color:"gray",width:17,marginLeft:".5rem",cursor:"help"}})))),t,c&&r.createElement("div",{className:u("mrf-feedback",{"mrf-txt_red":!!f})},c.message))},Dt=t.memo((e=>e.render?e.render(Object.assign(Object.assign({},e.field),{error:e.error,informations:e.informations})):e.children),((e,t)=>!t.deactivateReactMemo&&(e.field.value===t.field.value&&t.errorDisplayed===e.errorDisplayed&&bt(t.step)===bt(e.step)))),Lt=e=>{const{step:r,entry:n,children:a,component:o,errorDisplayed:l=!1,informations:i,deactivateReactMemo:s,inputWrapper:c}=e,{field:m}=h({defaultValue:dt(r.defaultValue)?r.defaultValue:null,name:n}),{getValues:u,setValue:p,formState:{errors:f}}=d(),b=n.split(".").reduce(((e,t)=>e&&e[t]),f),v=(e,t)=>"function"==typeof t?t({rawValues:u(),value:u(e),informations:i,error:b,getValue:e=>u(e)}):t,y=Object.assign(Object.assign({name:m.name},r.props),{id:n,readOnly:v(n,r.disabled)?"readOnly":null,placeholder:r.placeholder,onChange:e=>{const t=e?e.target?e.target.value||null:e:r.type===de.bool||r.type===de.number&&0===m.value?e:null;m.onChange(t),ct(r.onChange).map((e=>e({rawValues:u(),value:t,setValue:p})))},value:m.value});return t.createElement(Ft,{key:`collapse-${n}`,entry:n,functionalProperty:v,step:r,render:c,informations:i},t.createElement(Dt,{render:r.render,step:r,field:Object.assign({setValue:(e,t)=>p(e,t),rawValues:u(),getValue:e=>u(e)},m),error:b,errorDisplayed:l,informations:i,deactivateReactMemo:s},o?o(m,y):t.cloneElement(a,Object.assign({},y))))},$t=e=>e.render?e.render(Object.assign(Object.assign({},e),{error:e.error})):e.children,Rt=(e,t,r,n)=>dt(r)?r:t?[]:e;function It(e,t,r){return(e||[]).reduce(((e,n)=>{if("object"==typeof n)return Object.assign(Object.assign({},e),It(n.flow,t,r));const a=t[n];return a?Object.assign(Object.assign({},e),{[n]:Rt(r?r[n]:null,a.array||a.isMulti||!1,a.defaultValue)}):e}),{})}const qt=(e={},t={},r,n)=>{const a=ct(r).map((e=>e.map((e=>"object"==typeof e?e.flow:e)))).map(ft).getOrElse(Object.keys(n||{}));return Object.entries(n||{}).filter((([e])=>a.includes(e))).reduce(((r,[a,o])=>{var l,i;let s=null;e&&(s=e[a]);const c=t[a];return!s&&dt(c)&&(s=c),o.array&&!o.render?Object.assign(Object.assign({},r),{[a]:(s||[]).map((e=>{var r,o;return{value:"object"!=typeof e||e instanceof Date||Array.isArray(e)?e:qt(e,t,null===(r=null==n?void 0:n[a])||void 0===r?void 0:r.flow,(null===(o=null==n?void 0:n[a])||void 0===o?void 0:o.schema)||{})}}))}):"object"!=typeof s||s instanceof Date||Array.isArray(s)?Object.assign(Object.assign({},r),{[a]:void 0===s?Array.isArray(s)?[]:o.type===de.object?{}:null:s}):Object.assign(Object.assign({},r),{[a]:qt(s,t,null===(l=null==n?void 0:n[a])||void 0===l?void 0:l.flow,(null===(i=null==n?void 0:n[a])||void 0===i?void 0:i.schema)||{})})}),e)},Bt=(e,t)=>Object.entries(e).reduce(((e,r)=>{var n,a;const[o,l]=r;if(Array.isArray(l)){return ct(t).map((e=>e[o])).map((e=>!!e.array&&!e.render)).getOrElse(!1)?Object.assign(Object.assign({},e),{[o]:l.map((e=>{var r;return!e.value||"object"!=typeof e.value||e.value instanceof Date&&!Array.isArray(e.value)?e.value:Bt(e.value,(null===(r=t[o])||void 0===r?void 0:r.schema)||{})}))}):Object.assign(Object.assign({},e),{[o]:l})}if(!(!l||"object"!=typeof l||l instanceof Date&&!Array.isArray(l)))return Object.assign(Object.assign({},e),{[o]:Bt(l,(null===(n=t[o])||void 0===n?void 0:n.schema)||{})});if("json"!==(null===(a=t[o])||void 0===a?void 0:a.type))return Object.assign(Object.assign({},e),{[o]:l});try{return Object.assign(Object.assign({},e),{[o]:JSON.parse(l)})}catch(t){return Object.assign(Object.assign({},e),{[o]:l})}}),{}),Ht=(t,r,n)=>{const a=t||Object.keys(r),{shape:o,dependencies:l}=Mt(a,r);return e.object().shape(o,l).validate(n,{abortEarly:!1})},Jt=r.memo((({options:e,control:t,schema:r,onSubmit:n,handleSubmit:a})=>{const o=b({control:t}),l=i(j((e=>a((()=>{n(e)}))()),250,{leading:!0}),[]);return vt((()=>{(null==e?void 0:e.autosubmit)&&l(o)}),[o]),(null==e?void 0:e.watch)&&("function"==typeof e.watch?e.watch(Bt(o,r)):(console.group("react-form watch"),console.log(Bt(o,r)),console.groupEnd())),null}),(()=>!0)),Ut=r.forwardRef((function({schema:t,flow:n,value:o,inputWrapper:i,onSubmit:c,onError:u=(()=>{}),footer:p,style:f={},className:d,options:h={},nostyle:b},g){const O=n||Object.keys(t),j=(e,t)=>h.httpClient?h.httpClient(e,t):fetch(e,{method:t,headers:{Accept:"application/json","Content-Type":"application/json"}}),E=It(O,t,o),w=v({resolver:(r,n,a)=>m((r=>{const{shape:n,dependencies:a}=Mt(O,t,[],r);return e.object().shape(n,a)})(r))(r,n,a),shouldFocusError:!1,mode:"onChange"}),[x,k]=a(!1),{handleSubmit:_,reset:C,trigger:N,getValues:V}=w;l((()=>{h.showErrorsOnStart&&N()}),[N,x]),vt((()=>{C(Object.assign({},qt(o,E,n,t)))}),[o,t,n]);const S=(e,t,r,n)=>"function"==typeof t?t({rawValues:V(),value:V(e),informations:r,getValue:e=>V(e),error:n}):t;return s(g,(()=>({handleSubmit:()=>_((e=>{const r=Bt(e,t);c(r)}),u)(),trigger:N,methods:Object.assign(Object.assign({},w),{data:()=>Bt(V(),t)})}))),r.createElement(y,Object.assign({},w),r.createElement(Jt,{options:h,control:w.control,schema:t,onSubmit:c,handleSubmit:_}),r.createElement("form",{className:d||"mrf-pr_15 mrf-w_100",onSubmit:_((e=>{const r=Bt(e,t);c(r)}),u)},O.map(((e,n)=>{if("object"==typeof e)return r.createElement(Yt,{key:n,entry:e,schema:t,inputWrapper:i,httpClient:j,functionalProperty:S});const a=t[e];if(!a&&"string"==typeof e)return console.error(`no step found for the entry "${e}" in the given schema. Your form might not work properly. Please fix it`),null;const o={path:e};return r.createElement(Gt,{key:n,entry:e,step:a,schema:t,inputWrapper:i,httpClient:j,functionalProperty:S,informations:o})})),r.createElement(Kt,{render:p,reset:()=>C(E),valid:_((e=>c(Bt(e,t))),u),actions:h.actions})))})),Kt=e=>{var t,n,a,o,l,i,s,c,m,u,p,f,d,h;if(e.render)return e.render({reset:e.reset,valid:e.valid});const b=void 0===(null===(n=null===(t=e.actions)||void 0===t?void 0:t.submit)||void 0===n?void 0:n.display)||!!(null===(o=null===(a=e.actions)||void 0===a?void 0:a.submit)||void 0===o?void 0:o.display);return r.createElement("div",{className:"mrf-flex mrf-jc_end mrf-mt_5"},(null===(i=null===(l=e.actions)||void 0===l?void 0:l.cancel)||void 0===i?void 0:i.display)&&r.createElement("button",{className:"mrf-btn mrf-btn_red",type:"button",onClick:()=>{var t,r;return null===(r=null===(t=e.actions)||void 0===t?void 0:t.cancel)||void 0===r?void 0:r.action()}},(null===(c=null===(s=e.actions)||void 0===s?void 0:s.cancel)||void 0===c?void 0:c.label)||"Cancel"),(null===(u=null===(m=e.actions)||void 0===m?void 0:m.reset)||void 0===u?void 0:u.display)&&r.createElement("button",{className:"mrf-btn mrf-btn_red",type:"button",onClick:e.reset},(null===(f=null===(p=e.actions)||void 0===p?void 0:p.reset)||void 0===f?void 0:f.label)||"Reset"),b&&r.createElement("button",{className:"mrf-btn mrf-btn_green mrf-ml_10",type:"submit"},(null===(h=null===(d=e.actions)||void 0===d?void 0:d.submit)||void 0===h?void 0:h.label)||"Save"))},Yt=e=>{let{entry:t,schema:n,inputWrapper:a,httpClient:o,functionalProperty:l}=e;const{formState:{errors:i,dirtyFields:s,touchedFields:c}}=d(),m=Zt(t).some((e=>!!i[e]&&(s[e]||c[e])));return r.createElement(st,Object.assign({},t,{errored:m}),t.flow.map(((t,i)=>{if("object"==typeof t)return r.createElement(Yt,Object.assign({key:i},e,{entry:t}));const s=n[t];if(!s&&"string"==typeof t)return console.error(`no step found for the entry "${t}" in the given schema. Your form might not work properly. Please fix it`),null;const c={path:t};return r.createElement(Gt,{entry:t,step:s,schema:n,inputWrapper:a,httpClient:o,defaultValue:null==s?void 0:s.defaultValue,functionalProperty:l,informations:c})})))},Gt=e=>{let{entry:t,realEntry:n,step:i,schema:s,inputWrapper:m,httpClient:f,defaultValue:h,index:b,functionalProperty:v,informations:y}=e;const{formState:{errors:O,dirtyFields:j,touchedFields:N,isSubmitted:V},control:S,getValues:P,setValue:T,watch:M}=d(),[W,z]=a(bt(P())),A=t.split(".").reduce(((e,t)=>e&&e[t]),O),F=t.split(".").reduce(((e,t)=>e&&e[t]),j),D=t.split(".").reduce(((e,t)=>e&&e[t]),N),L=!!A&&(V||F||D);if(i=i,i.onAfterChange){const e=M(),r=t.replace("[",".").replace("]","").split(".").reduce(((e,t)=>e&&e[t]),e)||{},n=(e=>{const t=o();return l((()=>{t.current=e}),[e]),t.current})(Bt(r,s)),a=Bt(r,s);(!p(a,n)||void 0!==a&&void 0===n)&&i.onAfterChange({entry:t,value:P(t),rawValues:P(),previousValue:n,getValue:e=>P(e),setValue:T,onChange:e=>T(t,e),informations:y})}const $=c((()=>{const e="function"==typeof i.visible,t="function"==typeof i.disabled,r="function"==typeof i.label;return e||t||r||!!i.render||!!i.conditionalSchema}),[bt(s)]);if($){const e=M(),t=bt(e);t!==W&&z(t)}if(i.array)return r.createElement(Lt,{step:i,entry:t,errorDisplayed:L,informations:y,deactivateReactMemo:$,inputWrapper:m},r.createElement($t,{render:i.render,rawValues:P(),value:P(t),onChange:e=>T(t,e),setValue:(e,t)=>T(e,t),getValue:e=>P(e),informations:y,error:!!A},r.createElement(Qt,{entry:t,step:i,disabled:v(t,i.disabled||!1,y,A),component:(e,a)=>{var o;return r.createElement(Gt,{entry:`${t}.${a}.value`,step:Object.assign(Object.assign({},s[n||t]),{label:null,render:i.itemRender,onChange:void 0,array:!1,onAfterChange:i.onAfterChange}),schema:s,inputWrapper:m,httpClient:f,defaultValue:null===(o=e.defaultValue)||void 0===o?void 0:o.value,index:a,functionalProperty:v,informations:{path:t,parent:y,index:a}})}})));switch(i.type){case de.string:switch(i.format){case he.text:return r.createElement(Lt,{step:i,entry:t,errorDisplayed:L,informations:y,deactivateReactMemo:$,inputWrapper:m},r.createElement("textarea",{className:u("mrf-input",i.className,{"mrf-mrf-input__invalid":!!L})}));case he.code:case he.singleLineCode:const e=i.format===he.code?_t:Vt;return r.createElement(Lt,{step:i,entry:t,errorDisplayed:L,informations:y,deactivateReactMemo:$,inputWrapper:m},r.createElement(e,{className:u(null==i?void 0:i.className,{"mrf-input__invalid":!!A})}));case he.markdown:return r.createElement(Lt,{step:i,entry:t,errorDisplayed:L,informations:y,deactivateReactMemo:$,inputWrapper:m},r.createElement(Nt,{className:u(i.className,{"mrf-input__invalid":!!L})}));case he.buttonsSelect:case he.select:return r.createElement(Lt,{step:i,entry:t,errorDisplayed:L,informations:y,deactivateReactMemo:$,inputWrapper:m},r.createElement(gt,Object.assign({className:u("mrf-flex_grow_1",i.className,{"mrf-input__invalid":!!L}),disabled:v(t,i.disabled||!1,y,A)},i.props,{possibleValues:i.options,httpClient:f,isMulti:i.isMulti,createOption:i.createOption,onCreateOption:i.onCreateOption,transformer:i.transformer,buttons:i.format===he.buttonsSelect,optionsFrom:i.optionsFrom})));default:return r.createElement(Lt,{step:i,entry:t,errorDisplayed:L,informations:y,deactivateReactMemo:$,inputWrapper:m},r.createElement("input",{type:i.format||"text",className:u("mrf-input",i.className,{"mrf-input__invalid":!!L})}))}case de.number:switch(i.format){case he.buttonsSelect:case he.select:return r.createElement(Lt,{step:i,entry:t,errorDisplayed:L,informations:y,deactivateReactMemo:$,inputWrapper:m},r.createElement(gt,Object.assign({className:u("mrf-content",i.className,{"mrf-input__invalid":!!L})},i.props,{possibleValues:i.options,httpClient:f,isMulti:i.isMulti,createOption:i.createOption,onCreateOption:i.onCreateOption,transformer:i.transformer,buttons:i.format===he.buttonsSelect,optionsFrom:i.optionsFrom})));default:return r.createElement(Lt,{step:i,entry:t,errorDisplayed:L,informations:y,deactivateReactMemo:$,inputWrapper:m},r.createElement("input",{type:i.format||"number",className:u("mrf-input",i.className,{"mrf-input__invalid":!!L})}))}case de.bool:return r.createElement(Lt,{step:i,entry:t,errorDisplayed:L,informations:y,deactivateReactMemo:$,inputWrapper:m},r.createElement(tt,{className:i.className,errorDisplayed:L}));case de.object:switch(i.format){case he.buttonsSelect:case he.select:return r.createElement(Lt,{step:i,entry:t,errorDisplayed:L,informations:y,deactivateReactMemo:$,inputWrapper:m},r.createElement(gt,Object.assign({className:u("mrf-flex_grow_1",i.className,{"mrf-input__invalid":!!L})},i.props,{possibleValues:i.options,httpClient:f,isMulti:i.isMulti,createOption:i.createOption,onCreateOption:i.onCreateOption,transformer:i.transformer,buttons:i.format===he.buttonsSelect,optionsFrom:i.optionsFrom})));case he.form:const e=ct(i.flow).getOrElse(ct(i.schema).map((e=>Object.keys(e))).getOrElse([]));return r.createElement(Lt,{step:i,entry:t,errorDisplayed:L,informations:y,deactivateReactMemo:$,inputWrapper:m},r.createElement($t,{render:i.render,rawValues:P(),value:P(t),onChange:e=>T(t,e,{shouldValidate:!0}),setValue:(e,t)=>T(e,t),getValue:e=>P(e),informations:y},r.createElement(Xt,{schema:i.schema,flow:e,step:i,parent:t,inputWrapper:m,maybeCustomHttpClient:f,value:P(t)||h,functionalProperty:v,errorDisplayed:L,informations:y})));case he.code:return r.createElement(Lt,{step:i,entry:t,errorDisplayed:L,informations:y,deactivateReactMemo:$,inputWrapper:m,component:(e,t)=>r.createElement(_t,Object.assign({},t,{className:u(null==i?void 0:i.className,{"mrf-input__invalid":!!A}),onChange:t=>{let r;try{r=JSON.parse(t)}catch(e){r=t}e.onChange(r),ct(null==i?void 0:i.onChange).map((e=>e({rawValues:P(),value:r,setValue:T})))},value:null===e.value?null:"object"==typeof e.value?JSON.stringify(e.value,null,2):e.value}))});default:return r.createElement(Lt,{step:i,entry:t,errorDisplayed:L,informations:y,deactivateReactMemo:$,inputWrapper:m},r.createElement(wt,{className:u(i.className,{"mrf-input__invalid":!!L})}))}case de.date:switch(i.format){case he.datetime:return console.debug("datetime"),r.createElement(Lt,{step:i,entry:t,informations:y,deactivateReactMemo:$,inputWrapper:m,component:e=>r.createElement(w,{dateAdapter:E},r.createElement(_,{value:e.value,onChange:e.onChange,renderInput:e=>r.createElement(C,Object.assign({},e))}))});case he.time:return r.createElement(Lt,{step:i,entry:t,informations:y,deactivateReactMemo:$,inputWrapper:m,component:e=>r.createElement(w,{dateAdapter:E},r.createElement(k,{value:e.value,onChange:e.onChange,renderInput:e=>r.createElement(C,Object.assign({},e))}))});default:return r.createElement(Lt,{step:i,entry:t,informations:y,deactivateReactMemo:$,inputWrapper:m,component:e=>r.createElement(w,{dateAdapter:E},r.createElement(x,{value:e.value,onChange:e.onChange,renderInput:e=>r.createElement(C,Object.assign({},e))}))})}case de.file:return r.createElement(g,{name:t,control:S,render:({field:e})=>r.createElement(Lt,{step:i,entry:t,errorDisplayed:L,informations:y,deactivateReactMemo:$,inputWrapper:m},r.createElement((({onChange:n})=>{const[o,l]=a(!1),[s,c]=a(void 0),m=e.value||[];return r.createElement("div",{className:u("mrf-flex","mrf-ai_center",null==i?void 0:i.className,{"mrf-input__invalid":!!A})},r.createElement("input",{ref:e=>c(e),type:"file",multiple:!0,className:"mrf-d_none",onChange:e=>{const t=e.target.files;l(!0),n&&n(t?[...t]:[]),l(!1)}}),r.createElement("button",{type:"button",className:"mrf-btn mrf-btn_sm mrf-flex mrf-ai_center",disabled:o||v(t,(null==i?void 0:i.disabled)||!1,y,A),onClick:()=>{null==s||s.click()}},o&&r.createElement(Ie,null),!o&&r.createElement(He,null),r.createElement("span",{className:"mrf-ml_5"},"Select file(s)")),r.createElement("span",{className:"mrf-ml_5"},m.length<=0?"No files selected":m.map((e=>e.name)).join(" , ")))}),null))});case de.json:return r.createElement(Lt,{step:i,entry:t,informations:y,deactivateReactMemo:$,inputWrapper:m,component:(e,t)=>r.createElement(_t,Object.assign({},t,{className:u(null==i?void 0:i.className,{"mrf-input__invalid":!!A}),onChange:t=>{e.onChange(t),ct(null==i?void 0:i.onChange).map((e=>e({rawValues:P(),value:t,setValue:T})))},value:e.value}))});default:return null}},Qt=({entry:e,step:t,component:n,disabled:a})=>{const{getValues:o,setValue:l,control:i,trigger:s,formState:c}=d(),m=o(e),p=e.split(".").reduce(((e,t)=>e&&e[t]),c.errors),f=e.split(".").reduce(((e,t)=>e&&e[t]),c.dirtyFields),h=e.split(".").reduce(((e,t)=>e&&e[t]),c.touchedFields),b=!!p&&(c.isSubmitted||f||h),{fields:v,append:y,remove:g}=O({control:i,name:e});return r.createElement(r.Fragment,null,v.map(((t,o)=>r.createElement("div",{key:t.id},r.createElement("div",{className:"mrf-ai_center mrf-mt_5",style:{position:"relative"}},r.createElement("div",{style:{width:"95%"}},n(Object.assign(Object.assign({key:t.id},t),{defaultValue:m[o]}),o)),r.createElement("button",{type:"button",style:{position:"absolute",top:"2px",right:0},className:"mrf-btn mrf-btn_red mrf-btn_sm mrf-ml_5",disabled:a,onClick:()=>{g(o),s(e)}},r.createElement(et,{size:16})))))),r.createElement("div",{className:"mrf-flex mrf-jc_flex_end"},r.createElement("button",{type:"button",className:u("mrf-btn","mrf-btn_blue","mrf-btn_sm","mrf-mt_5",{"mrf-input__invalid":!!b}),onClick:()=>{const r=qt({},o(e),t.flow,t.schema);y({value:t.addableDefaultValue||(t.type===de.object&&r?r:Rt())}),ct(t.onChange).map((t=>t({rawValues:o(),value:o(e),setValue:l})))},disabled:a},"Add"),p&&r.createElement("div",{className:"mrf-invalid-feedback"},p.message)))},Xt=({schema:e,flow:t,parent:n,inputWrapper:o,maybeCustomHttpClient:l,errorDisplayed:i,value:s,step:c,functionalProperty:m,informations:p})=>{var f;const{getValues:h,setValue:v,control:y,formState:{errors:g,dirtyFields:O,touchedFields:j}}=d(),[E,w]=a(!!c.collapsed);b({name:(null===(f=null==c?void 0:c.conditionalSchema)||void 0===f?void 0:f.ref)||"",control:y});const x=ct(c.conditionalSchema).map((e=>{const t=ct(e.ref).map((e=>h(e))).getOrNull(),r=h(),n=ct(e.switch.find((e=>"function"==typeof e.condition?e.condition({rawValues:r,ref:t}):e.condition===t))).orElse(e.switch.find((e=>e.default))).getOrElse({schema:{},flow:[]});return{schema:n.schema,flow:n.flow||Object.keys(n.schema)}})).getOrElse({schema:e,flow:t});vt((()=>{const e=It(x.flow,x.schema,h(n));v(n,e,{shouldValidate:!1})}),[x.schema]);const k=x.flow.reduce(((e,t)=>[...e,{step:"string"==typeof t?x.schema[t]:x.schema[t.label],entry:t}]),[]),_=k.length>=1&&null!==c.label;return r.createElement("div",{className:u(c.className,{"mrf-nestedform__border":_,"mrf-border__error":!!i}),style:{position:"relative"}},!!c.collapsable&&x.flow.length>1&&E&&r.createElement(Ke,{size:30,className:"mrf-cursor_pointer",style:{position:"absolute",top:-35,right:0,zIndex:100},strokeWidth:"2",onClick:()=>w(!E)}),!!c.collapsable&&x.flow.length>1&&!E&&r.createElement(Qe,{size:30,className:"mrf-cursor_pointer",style:{position:"absolute",top:-35,right:0,zIndex:100},strokeWidth:"2",onClick:()=>w(!E)}),k.map((({step:t,entry:a},i)=>"object"==typeof a?r.createElement(Yt,{key:i,entry:a,schema:e,inputWrapper:o,httpClient:l,functionalProperty:m}):t||"string"!=typeof a?r.createElement(Gt,{key:`step.${a}.${i}`,entry:`${n}.${a}`,realEntry:a,step:x.schema[a],schema:x.schema,inputWrapper:o,httpClient:l,defaultValue:s&&s[a],functionalProperty:m,informations:{path:a,parent:p}}):(console.error(`no step found for the entry "${a}" in the given schema. Your form might not work properly. Please fix it`),null))))};function Zt(e){return e.flow.map((e=>"string"==typeof e?e:Zt(e))).flat()}export{tt as BooleanInput,_t as CodeInput,st as Collapse,Ut as Form,Nt as MarkdownInput,wt as ObjectInput,gt as SelectInput,Vt as SingleLineCode,Le as constraints,he as format,de as type,Ht as validate};
1
+ import*as e from"yup";import*as t from"react";import r,{useRef as n,useEffect as a,useCallback as o,forwardRef as l,useState as i,useMemo as s,useImperativeHandle as c}from"react";import{yupResolver as m}from"@hookform/resolvers/yup";import{useWatch as u,useFormContext as p,useController as f,useFieldArray as d,Controller as b,useForm as y,FormProvider as v}from"react-hook-form";import h from"object-hash";import g from"lodash.debounce";import O from"fast-deep-equal";import{AdapterDateFns as j}from"@mui/x-date-pickers/AdapterDateFns";import{LocalizationProvider as E}from"@mui/x-date-pickers/LocalizationProvider";import{DatePicker as w}from"@mui/x-date-pickers/DatePicker";import{TimePicker as x}from"@mui/x-date-pickers/TimePicker";import{DateTimePicker as k}from"@mui/x-date-pickers/DateTimePicker";import C from"@mui/material/TextField";import _ from"prop-types";import N from"classnames";import V from"react-select/creatable";import S from"react-select";import{EditorState as P}from"@codemirror/state";import{javascript as T}from"@codemirror/lang-javascript";import{html as M}from"@codemirror/lang-html";import{json as z}from"@codemirror/lang-json";import{css as W}from"@codemirror/lang-css";import{markdown as A}from"@codemirror/lang-markdown";import{EditorView as L,highlightSpecialChars as D,drawSelection as F,dropCursor as $,highlightActiveLine as R,keymap as I}from"@codemirror/view";import{history as q,historyKeymap as B}from"@codemirror/history";import{foldGutter as H,foldKeymap as J}from"@codemirror/fold";import{defaultKeymap as U,indentWithTab as K}from"@codemirror/commands";import{indentUnit as Y}from"@codemirror/language";import{lineNumbers as G,highlightActiveLineGutter as Q}from"@codemirror/gutter";import{bracketMatching as X}from"@codemirror/matchbrackets";import{closeBrackets as Z,closeBracketsKeymap as ee}from"@codemirror/closebrackets";import{highlightSelectionMatches as te,searchKeymap as re}from"@codemirror/search";import{autocompletion as ne,completionKeymap as ae}from"@codemirror/autocomplete";import{commentKeymap as oe}from"@codemirror/comment";import{rectangularSelection as le}from"@codemirror/rectangular-selection";import{defaultHighlightStyle as ie}from"@codemirror/highlight";import{lintKeymap as se}from"@codemirror/lint";import{oneDark as ce}from"@codemirror/theme-one-dark";import me from"showdown";import"@fortawesome/fontawesome-free/css/all.css";import"highlight.js/styles/monokai.css";import ue from"highlight.js/lib/core";import pe from"react-tooltip";import{v4 as fe}from"uuid";const de={string:"string",number:"number",bool:"bool",date:"date",object:"object",file:"file",json:"json"};Object.values(de);const be={array:"array",select:"select",code:"code",markdown:"markdown",text:"textarea",textarea:"textarea",email:"email",password:"password",hidden:"hidden",form:"form",buttonsSelect:"buttons",singleLineCode:"singleLineCode",datetime:"datetime-local",time:"time"};Object.values(be);const ye=(e="Value required")=>t=>t.required(e),ve=(e="That is not a valid url")=>t=>t.url(e),he=(e="That is not a valid email")=>t=>t.email(e),ge=(e="That is not a valid uuid")=>t=>t.uuid(e),Oe=(e=/.*/,t="This field does not match the pattern")=>r=>r.matches(e,{message:t,excludeEmptyString:!0}),je=(e,t="Min value is required")=>r=>r.min(Le(e),t),Ee=(e,t="Max value is required")=>r=>r.max(Le(e),t),we=(e="Positive value is required")=>t=>t.positive(e),xe=(e="Negative value is required")=>t=>t.negative(e),ke=(e="an integer please")=>t=>t.integer(e),Ce=(e,t=`This field must be less than ${e}`)=>(r,n,a)=>("number"!=typeof e&&a.push([n,e]),r.lessThan(Le(e),t)),_e=(e,t=`This field must be more than ${e}`)=>(r,n,a)=>("number"!=typeof e&&a.push([n,e]),r.moreThan(Le(e),t)),Ne=(e,t=`The size of this collection must be ${e}`)=>r=>r.length(Le(e),t),Ve=(e,t="Unsupported File Format")=>r=>{const n=e.map((e=>e.toLowerCase()));return r.test("supportedFormat",t,(e=>!e.length||n.some((t=>e[0].type.toLowerCase().includes(t)))))},Se=(e,t="Unsupported File Format")=>r=>{const n=e.map((e=>e.toLowerCase()));return r.test("unsupportedFormat",t,(e=>!e.length||n.some((t=>e[0].type.toLowerCase().includes(t)))))},Pe=(e,t=`size is excedeed ${e}`)=>r=>r.test("fileSize",t,(t=>!t.length||t[0].size<=Le(e))),Te=(e,t="Test failed",r)=>n=>n.test(e,t,r),Me=(e,t,r=[],n=[])=>(a,o,l)=>{const i=r.reduce(((e,t)=>t(e,o,l)),a),s=n.reduce(((e,t)=>t(e,o,l)),a);return a.when(e,{is:t,then:i,otherwise:s})},ze=(e,t=`This value must be one of ${e.join(", ")}`)=>r=>r.oneOf(e.map(Le),t),We=(e,t=`This value can't include the following values ${e.join(", ")}`)=>r=>r.test("blacklist",t,(t=>!e.some((e=>(t||"").includes(e))))),Ae=t=>e.ref(t),Le=e=>(null==e?void 0:e.ref)?Ae(e.ref):e,De={required:({message:e="Value required"})=>ye(e),url:({message:e="That is not a valid url"})=>ve(e),email:({message:e="That is not a valid email"})=>he(e),uuid:({message:e="That is not a valid uuid"})=>ge(e),matches:({regexp:e=/.*/,message:t="This field does not match the pattern"})=>Oe(e,t),min:({ref:e,message:t="Min value is required"})=>je(e,t),max:({ref:e,message:t="Max value is required"})=>Ee(e,t),positive:({message:e="Positive value is required"})=>we(e),negative:({message:e="Negative value is required"})=>xe(e),integer:({message:e="an integer please"})=>ke(e),lessThan:({ref:e,message:t=`This field must be less than ${e}`})=>Ce(e,t),moreThan:({ref:e,message:t=`This field must be more than ${e}`})=>_e(e,t),length:({ref:e,message:t=`The size of this collection must be ${e}`})=>Ne(e,t),supportedFormat:({arrayOfValues:e,message:t="Unsupported File Format"})=>Ve(e,t),unsupportedFormat:({arrayOfValues:e,message:t="Unsupported File Format"})=>Se(e,t),maxSize:({ref:e,message:t=`size is excedeed ${e}`})=>Pe(e,t),test:e=>Te(e.name,e.message,e.test),when:({ref:e,test:t,then:r=[],otherwise:n=[]})=>Me(e,t,r,n),oneOf:({arrayOfValues:e,message:t=`This value must be one of ${e.join(", ")}`})=>ze(e,t),blacklist:({arrayOfValues:e,message:t=`This value can't include the following values ${e.join(", ")}`})=>We(e,t),ref:e=>Ae(e.ref)};var Fe=Object.freeze({__proto__:null,required:ye,url:ve,email:he,uuid:ge,matches:Oe,min:je,max:Ee,positive:we,negative:xe,integer:ke,lessThan:Ce,moreThan:_e,length:Ne,supportedFormat:Ve,unsupportedFormat:Se,maxSize:Pe,test:Te,when:Me,oneOf:ze,blacklist:We,ref:Ae,jsonConstraints:De});function $e(e){return null==e?Ie:Re(e)}const Re=e=>({map:t=>$e(t(e)),flatMap:t=>$e(t(e)).getOrElse(Ie),fold:(t,r)=>r(e),orElse:()=>$e(e),getOrElse:()=>e,getOrNull:()=>e,isDefined:()=>!0,exists:t=>$e(t(e)).isDefined()}),Ie={map:()=>Ie,flatMap:()=>Ie,fold:e=>e(),orElse:e=>$e(e),getOrElse:e=>e,getOrNull:()=>{},isDefined:()=>!1,exists:()=>!1},qe={[de.string]:t=>e.string().nullable().optional().typeError(t||"Value must be a string"),[de.number]:t=>e.number().nullable().optional().transform((e=>isNaN(e)?null:e)).typeError(t||"Value must be a number"),[de.bool]:()=>e.bool().nullable().optional(),[de.object]:()=>e.object().nullable().optional(),[de.date]:t=>e.date().nullable().optional().typeError(t||"Value must be a date"),[de.file]:()=>e.mixed(),[de.json]:()=>e.mixed()},Be=(t,r,n,a)=>{const{constraints:o=[]}=t;if(t.array||t.isMulti){let l,i=e.array();if(t.schema){const r=[];l=e.object().shape(Je(t.flow||Object.keys(t.schema),t.schema,r,a).shape,r),i=i.of(e.object().shape({value:l}))}return o.reduce(((e,t)=>He(t,e,r,n)),i)}if(t.type===de.object&&t.schema){if(!Object.keys(t.schema).length)return e.object();const l=Je(t.flow||Object.keys(t.schema),t.schema,n,a);return o.reduce(((e,t)=>He(t,e,r,n)),e.object().shape(l.shape,n))}if(t.type===de.object&&t.conditionalSchema){const{schema:l,flow:i}=$e(t.conditionalSchema).map((e=>{const t=$e(e.ref).map((e=>a[e])).getOrNull();return $e(e.switch.find((e=>"function"==typeof e.condition?e.condition({rawValues:a,ref:t}):e.condition===t))).orElse(e.switch.find((e=>e.default))).getOrElse({schema:{},flow:[]})})).getOrElse({schema:{},flow:[]}),s=Je(i||Object.keys(l),l,n,a);return o.reduce(((e,t)=>He(t,e,r,n)),e.object().shape(s.shape,n))}return o.reduce(((e,t)=>He(t,e,r,n)),qe[t.type]())},He=(e,t,r,n)=>"function"==typeof e?e(t,r,n):De[e.type](e)(t,r,n),Je=(e,t,r=[],n={})=>{if(!Object.keys(t).length)return{shape:{},dependencies:r};const a=(e||Object.keys(t)).reduce(((e,a)=>{if("object"==typeof a)return Object.assign(Object.assign({},e),Je(a.flow,t,r,n).shape);if(!t[a])return e;const o=Be(t[a],a,r,n);return Object.assign(Object.assign({},e),{[a]:o})}),{});return{shape:a,dependencies:r}},Ue=e=>Boolean(e&&"function"==typeof e.then),Ke=e=>e.some(Array.isArray)?Ke(e.flat()):e;function Ye(e){return null!=e}const Ge=e=>e&&Array.isArray(e)?e.map(Ge):e&&"object"==typeof e?Object.fromEntries(Object.entries(e).map((([e,t])=>Ue(t)?[e,`promise-${e}`]:"object"==typeof t?[e,Ge(t)]:[e,t]))):e,Qe=e=>h(Ge(e)),Xe=(e,t)=>{const r=n(!0),o=n(t);a((()=>{if(r.current)return e(),void(r.current=!1);Qe(t)!==Qe(o.current)&&(o.current=Object.assign({},t),e())}),t)},Ze=(e,t,r,n)=>Ye(r)?r:t?[]:e;function et(e,t,r){return t?(e||Object.keys(t)).reduce(((e,n)=>{if("object"==typeof n)return Object.assign(Object.assign({},e),et(n.flow,t,r));const a=t[n];return a?a.schema&&!a.array?Object.assign(Object.assign({},e),{[n]:a.defaultValue||et(a.flow,a.schema)}):Object.assign(Object.assign({},e),{[n]:Ze(r?r[n]:null,a.array||a.isMulti||!1,a.defaultValue)}):e}),{}):{}}const tt=(e={},t={},r,n)=>{const a=$e(r).map((e=>e.map((e=>"object"==typeof e?e.flow:e)))).map(Ke).getOrElse(Object.keys(n||{}));return Object.entries(n||{}).filter((([e])=>a.includes(e))).reduce(((r,[a,o])=>{var l,i;let s=null;e&&(s=e[a]);const c=t[a];return!s&&Ye(c)&&(s=c),o.array&&!o.render?Object.assign(Object.assign({},r),{[a]:(s||[]).map((e=>{var r,o;return{value:"object"!=typeof e||e instanceof Date||Array.isArray(e)?e:tt(e,t,null===(r=null==n?void 0:n[a])||void 0===r?void 0:r.flow,(null===(o=null==n?void 0:n[a])||void 0===o?void 0:o.schema)||{})}}))}):"object"!=typeof s||s instanceof Date||Array.isArray(s)?Object.assign(Object.assign({},r),{[a]:void 0===s?Array.isArray(s)?[]:null:s}):Object.assign(Object.assign({},r),{[a]:tt(null==e?void 0:e[a],null==t?void 0:t[a],null===(l=null==n?void 0:n[a])||void 0===l?void 0:l.flow,(null===(i=null==n?void 0:n[a])||void 0===i?void 0:i.schema)||{})})}),e)},rt=(e,t)=>!e||"object"!=typeof e||e instanceof Date||Array.isArray(e)?e:Object.entries(e).reduce(((e,r)=>{var n,a;const[o,l]=r;if(Array.isArray(l)){return $e(t).map((e=>e[o])).map((e=>!!e.array&&!e.render)).getOrElse(!1)?Object.assign(Object.assign({},e),{[o]:l.map((e=>{var r;return!e.value||"object"!=typeof e.value||e.value instanceof Date&&!Array.isArray(e.value)?e.value:rt(e.value,(null===(r=t[o])||void 0===r?void 0:r.schema)||{})}))}):Object.assign(Object.assign({},e),{[o]:l})}if(!(!l||"object"!=typeof l||l instanceof Date&&!Array.isArray(l)))return Object.assign(Object.assign({},e),{[o]:rt(l,(null===(n=t[o])||void 0===n?void 0:n.schema)||{})});if("json"!==(null===(a=t[o])||void 0===a?void 0:a.type))return Object.assign(Object.assign({},e),{[o]:l});try{return Object.assign(Object.assign({},e),{[o]:JSON.parse(l)})}catch(t){return Object.assign(Object.assign({},e),{[o]:l})}}),{});function nt(e){return e.flow.map((e=>"string"==typeof e?e:nt(e))).flat()}const at=r.memo((({options:e,control:t,schema:r,onSubmit:n,handleSubmit:a})=>{const l=u({control:t}),i=o(g((e=>a((()=>{n(e)}))()),250,{leading:!0}),[]);return Xe((()=>{(null==e?void 0:e.autosubmit)&&i(l)}),[l]),(null==e?void 0:e.watch)&&("function"==typeof e.watch?e.watch(rt(l,r)):(console.group("react-form watch"),console.log(rt(l,r)),console.groupEnd())),null}),(()=>!0));function ot(){return ot=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},ot.apply(this,arguments)}function lt(e,t){if(null==e)return{};var r,n,a=function(e,t){if(null==e)return{};var r,n,a={},o=Object.keys(e);for(n=0;n<o.length;n++)r=o[n],t.indexOf(r)>=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n<o.length;n++)r=o[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var it=l((function(e,t){var n=e.color,a=void 0===n?"currentColor":n,o=e.size,l=void 0===o?24:o,i=lt(e,["color","size"]);return r.createElement("svg",ot({ref:t,xmlns:"http://www.w3.org/2000/svg",width:l,height:l,viewBox:"0 0 24 24",fill:"none",stroke:a,strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},i),r.createElement("line",{x1:"12",y1:"2",x2:"12",y2:"6"}),r.createElement("line",{x1:"12",y1:"18",x2:"12",y2:"22"}),r.createElement("line",{x1:"4.93",y1:"4.93",x2:"7.76",y2:"7.76"}),r.createElement("line",{x1:"16.24",y1:"16.24",x2:"19.07",y2:"19.07"}),r.createElement("line",{x1:"2",y1:"12",x2:"6",y2:"12"}),r.createElement("line",{x1:"18",y1:"12",x2:"22",y2:"12"}),r.createElement("line",{x1:"4.93",y1:"19.07",x2:"7.76",y2:"16.24"}),r.createElement("line",{x1:"16.24",y1:"7.76",x2:"19.07",y2:"4.93"}))}));function st(){return st=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},st.apply(this,arguments)}function ct(e,t){if(null==e)return{};var r,n,a=function(e,t){if(null==e)return{};var r,n,a={},o=Object.keys(e);for(n=0;n<o.length;n++)r=o[n],t.indexOf(r)>=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n<o.length;n++)r=o[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}it.propTypes={color:_.string,size:_.oneOfType([_.string,_.number])},it.displayName="Loader";var mt=l((function(e,t){var n=e.color,a=void 0===n?"currentColor":n,o=e.size,l=void 0===o?24:o,i=ct(e,["color","size"]);return r.createElement("svg",st({ref:t,xmlns:"http://www.w3.org/2000/svg",width:l,height:l,viewBox:"0 0 24 24",fill:"none",stroke:a,strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},i),r.createElement("path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"}),r.createElement("polyline",{points:"17 8 12 3 7 8"}),r.createElement("line",{x1:"12",y1:"3",x2:"12",y2:"15"}))}));function ut(){return ut=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},ut.apply(this,arguments)}function pt(e,t){if(null==e)return{};var r,n,a=function(e,t){if(null==e)return{};var r,n,a={},o=Object.keys(e);for(n=0;n<o.length;n++)r=o[n],t.indexOf(r)>=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n<o.length;n++)r=o[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}mt.propTypes={color:_.string,size:_.oneOfType([_.string,_.number])},mt.displayName="Upload";var ft=l((function(e,t){var n=e.color,a=void 0===n?"currentColor":n,o=e.size,l=void 0===o?24:o,i=pt(e,["color","size"]);return r.createElement("svg",ut({ref:t,xmlns:"http://www.w3.org/2000/svg",width:l,height:l,viewBox:"0 0 24 24",fill:"none",stroke:a,strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},i),r.createElement("polyline",{points:"6 9 12 15 18 9"}))}));function dt(){return dt=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},dt.apply(this,arguments)}function bt(e,t){if(null==e)return{};var r,n,a=function(e,t){if(null==e)return{};var r,n,a={},o=Object.keys(e);for(n=0;n<o.length;n++)r=o[n],t.indexOf(r)>=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n<o.length;n++)r=o[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}ft.propTypes={color:_.string,size:_.oneOfType([_.string,_.number])},ft.displayName="ChevronDown";var yt=l((function(e,t){var n=e.color,a=void 0===n?"currentColor":n,o=e.size,l=void 0===o?24:o,i=bt(e,["color","size"]);return r.createElement("svg",dt({ref:t,xmlns:"http://www.w3.org/2000/svg",width:l,height:l,viewBox:"0 0 24 24",fill:"none",stroke:a,strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},i),r.createElement("polyline",{points:"18 15 12 9 6 15"}))}));yt.propTypes={color:_.string,size:_.oneOfType([_.string,_.number])},yt.displayName="ChevronUp";const vt=({onChange:e,value:t,readOnly:n,className:a,errorDisplayed:o})=>{const l=t=>{n||null==e||e(t)};let i=N("mrf-content_switch",a,{"mrf-content_switch_button_on":!!t,"mrf-content_switch_button_off":!t&&null!==t,"mrf-content_switch_button_null":null===t,"mrf-cursor_pointer":!n,"mrf-cursor_not_allowed":n,"mrf-input__invalid":!!o}),s=()=>l(!0);return t&&(s=()=>l(!1)),r.createElement("input",{type:"checkbox",className:i,onChange:s})};function ht(){return ht=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},ht.apply(this,arguments)}function gt(e,t){if(null==e)return{};var r,n,a=function(e,t){if(null==e)return{};var r,n,a={},o=Object.keys(e);for(n=0;n<o.length;n++)r=o[n],t.indexOf(r)>=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n<o.length;n++)r=o[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var Ot=l((function(e,t){var n=e.color,a=void 0===n?"currentColor":n,o=e.size,l=void 0===o?24:o,i=gt(e,["color","size"]);return r.createElement("svg",ht({ref:t,xmlns:"http://www.w3.org/2000/svg",width:l,height:l,viewBox:"0 0 24 24",fill:"none",stroke:a,strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},i),r.createElement("path",{d:"M17.94 17.94A10.07 10.07 0 0 1 12 20c-7 0-11-8-11-8a18.45 18.45 0 0 1 5.06-5.94M9.9 4.24A9.12 9.12 0 0 1 12 4c7 0 11 8 11 8a18.5 18.5 0 0 1-2.16 3.19m-6.72-1.07a3 3 0 1 1-4.24-4.24"}),r.createElement("line",{x1:"1",y1:"1",x2:"23",y2:"23"}))}));function jt(){return jt=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},jt.apply(this,arguments)}function Et(e,t){if(null==e)return{};var r,n,a=function(e,t){if(null==e)return{};var r,n,a={},o=Object.keys(e);for(n=0;n<o.length;n++)r=o[n],t.indexOf(r)>=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n<o.length;n++)r=o[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}Ot.propTypes={color:_.string,size:_.oneOfType([_.string,_.number])},Ot.displayName="EyeOff";var wt=l((function(e,t){var n=e.color,a=void 0===n?"currentColor":n,o=e.size,l=void 0===o?24:o,i=Et(e,["color","size"]);return r.createElement("svg",jt({ref:t,xmlns:"http://www.w3.org/2000/svg",width:l,height:l,viewBox:"0 0 24 24",fill:"none",stroke:a,strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},i),r.createElement("path",{d:"M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z"}),r.createElement("circle",{cx:"12",cy:"12",r:"3"}))}));wt.propTypes={color:_.string,size:_.oneOfType([_.string,_.number])},wt.displayName="Eye";const xt=e=>{const[t,n]=i(e.initCollapsed||e.collapsed),a=e=>{e&&e.stopPropagation(),n(!t)};return r.createElement("div",null,r.createElement("hr",{className:N({"mrf-collapse_error":e.errored})}),r.createElement("div",{className:"mrf-cursor_pointer mrf-flex mrf-jc_between",onClick:a},r.createElement("span",{className:N("mrf-collapse_label",{"mrf-collapse_error":e.errored})},e.label),r.createElement("button",{type:"button",className:N("mrf-btn","mrf-btn_sm","mrf-ml_5",{"mrf-collapse_error":e.errored}),onClick:a},!!t&&r.createElement(wt,{size:16}),!t&&r.createElement(Ot,{size:16}))),r.createElement("div",{className:N("mrf-ml_10",{"mrf-display__none":!!t,"mrf-flex":!!e.inline,"mrf-collapse__inline":!!e.inline})},e.children),e.lineEnd&&r.createElement("hr",null))},kt=(e,t=[],r=!1)=>{if(null===e||!e)return null;if(r)return $e(e).map((e=>(Array.isArray(e)?e||[]:"object"==typeof e?Object.values(e):e).map((e=>kt(e,t,!1))))).getOrElse([]);const n=$e(t.find((t=>O(t.value,e))));return n.getOrElse({label:n.map((e=>e.label)).getOrElse((null==e?void 0:e.label)||("object"==typeof e?JSON.stringify(e):e)),value:n.map((e=>e.value)).getOrElse((null==e?void 0:e.value)||e)})},Ct=e=>{const{getValues:t}=p();function n(t){const r=e.transformer?"function"==typeof e.transformer?e.transformer(t):{label:t[e.transformer.label],value:t[e.transformer.value]}:t;return{label:(null==r?void 0:r.label)||("object"==typeof r?JSON.stringify(r):r),value:(null==r?void 0:r.value)||t}}const o=(e.possibleValues||[]).map((e=>n(e))),[l,s]=i(!0),[c,m]=i(o),[u,f]=i();a((()=>{!l&&c.length&&f(kt(e.value||e.defaultValue,c,e.isMulti))}),[e.value,c,e.defaultValue,l]),a((()=>{if(e.optionsFrom){if($e(e.fetchCondition).map((e=>e())).getOrElse(!0)){let r;if(s(!0),Ue(e.optionsFrom))r=e.optionsFrom;else if("function"==typeof e.optionsFrom){const n=e.optionsFrom({rawValues:t(),value:t(e.id)});r=Ue(n)?n:e.httpClient(n,"GET").then((e=>e.json()))}else r=e.httpClient(e.optionsFrom,"GET").then((e=>e.json()));r.then((e=>e.map((e=>n(e))))).then((e=>{m(e),f(e.find((e=>Array.isArray(u)?u.find((t=>t.value===e.value)):e.value===(u?u.value:u)))||null),s(!1)}))}}else m((e.possibleValues||[]).map((e=>n(e)))),setTimeout((()=>s(!1)),250)}),[e.optionsFrom,e.possibleValues]);const d=t=>{var r,n;f(t),e.isMulti?null===(r=null==e?void 0:e.onChange)||void 0===r||r.call(e,t.map((e=>e.value))):null===(n=null==e?void 0:e.onChange)||void 0===n||n.call(e,null==t?void 0:t.value)},b=(t,r)=>{const n=$e(r).map((e=>e(t))).flatMap((t=>{return r=t,e.transformer?"function"==typeof e.transformer?$e(e.transformer(r)):Re({label:r[e.transformer.label],value:r[e.transformer.value]}):Ie;var r})).getOrElse(kt(t,c));m([...c,n]),e.isMulti?d([...u,n]):d(n)};return e.buttons?r.createElement("div",{style:{display:"flex"}},c.map(((t,n)=>{const a=!!u&&(e.isMulti?u.includes(t):t.value===u.value);return r.createElement("button",{key:n,type:"button",disabled:e.disabled,className:N(e.className,"mrf-btn mrf-btn_grey mrf-ml_5",{active:a}),onClick:()=>(t=>{if(e.isMulti){const e=u;return e.includes(t)?d(e.filter((e=>e.value!==t.value))):d([...e,t])}return d(t)})(t)},t.label)}))):e.createOption?r.createElement(V,Object.assign({},e,{name:`${e.label}-search`,isLoading:l,value:u,isDisabled:l||e.disabled,placeholder:e.placeholder,onChange:d,options:c,onCreateOption:t=>b(t,e.onCreateOption),classNamePrefix:"react-form-select",className:e.className})):r.createElement(S,Object.assign({},e,{name:`${e.label}-search`,isLoading:l,value:u,defaultValue:u,isDisabled:l||e.disabled,placeholder:e.placeholder,options:c,onChange:d,classNamePrefix:"react-form-select",className:e.className}))};function _t(){return _t=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},_t.apply(this,arguments)}function Nt(e,t){if(null==e)return{};var r,n,a=function(e,t){if(null==e)return{};var r,n,a={},o=Object.keys(e);for(n=0;n<o.length;n++)r=o[n],t.indexOf(r)>=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n<o.length;n++)r=o[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var Vt=l((function(e,t){var n=e.color,a=void 0===n?"currentColor":n,o=e.size,l=void 0===o?24:o,i=Nt(e,["color","size"]);return r.createElement("svg",_t({ref:t,xmlns:"http://www.w3.org/2000/svg",width:l,height:l,viewBox:"0 0 24 24",fill:"none",stroke:a,strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},i),r.createElement("circle",{cx:"12",cy:"12",r:"10"}),r.createElement("line",{x1:"12",y1:"8",x2:"12",y2:"16"}),r.createElement("line",{x1:"8",y1:"12",x2:"16",y2:"12"}))}));function St(){return St=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},St.apply(this,arguments)}function Pt(e,t){if(null==e)return{};var r,n,a=function(e,t){if(null==e)return{};var r,n,a={},o=Object.keys(e);for(n=0;n<o.length;n++)r=o[n],t.indexOf(r)>=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n<o.length;n++)r=o[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}Vt.propTypes={color:_.string,size:_.oneOfType([_.string,_.number])},Vt.displayName="PlusCircle";var Tt=l((function(e,t){var n=e.color,a=void 0===n?"currentColor":n,o=e.size,l=void 0===o?24:o,i=Pt(e,["color","size"]);return r.createElement("svg",St({ref:t,xmlns:"http://www.w3.org/2000/svg",width:l,height:l,viewBox:"0 0 24 24",fill:"none",stroke:a,strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},i),r.createElement("circle",{cx:"12",cy:"12",r:"10"}),r.createElement("line",{x1:"8",y1:"12",x2:"16",y2:"12"}))}));Tt.propTypes={color:_.string,size:_.oneOfType([_.string,_.number])},Tt.displayName="MinusCircle";const Mt=e=>{const[r,n]=i({});a((()=>{n(Object.fromEntries(Object.entries(e.value||{}).map((([e,t],r)=>[Date.now()+r,{key:e,value:t}]))))}),[]),a((()=>{if(e.value){const t=e.value||{},a=Object.entries(r||{}).reduce(((e,[t,r])=>r.key?Object.assign(Object.assign({},e),{[r.key]:r.value}):e),{});O(t,a)||n(Object.fromEntries(Object.entries(e.value||{}).map((([e,t],r)=>[Date.now()+r,{key:e,value:t}]))))}}),[e.value]);const o=t=>{var r;null===(r=null==e?void 0:e.onChange)||void 0===r||r.call(e,Object.values(t).reduce(((e,t)=>Object.assign(Object.assign({},e),{[t.key]:t.value})),{}))},l=()=>{const t=e.defaultKeyValue||{key:"",value:""},a=Object.assign(Object.assign({},r),{[Date.now()]:t});n(a),o(a)};return t.createElement("div",{className:e.className},0===Object.keys(r||{}).length&&t.createElement("button",{disabled:e.disabled,type:"button",className:"mrf-flex mrf-btn mrf-btn_blue mrf-btn_sm",onClick:()=>{if(!r||0===Object.keys(r).length){const t=Object.assign(Object.assign({},r),{[Date.now()]:e.defaultKeyValue||{key:"",value:""}});n(t),o(t)}}},t.createElement(Vt,null)),Object.entries(r||{}).map((([a,{key:i,value:s}],c)=>t.createElement("div",{className:"mrf-flex mrf-mt_5",key:c},t.createElement("input",{disabled:e.disabled,type:"text",className:"mrf-w_50 mrf-input",placeholder:e.placeholderKey,value:i,onChange:e=>((e,t)=>{const a=Object.assign(Object.assign({},r),{[e]:{key:t,value:r[e].value}});n(a),o(a)})(a,e.target.value)}),t.createElement("input",{disabled:e.disabled,type:"text",className:"mrf-w_50 mrf-input",placeholder:e.placeholderValue,value:s,onChange:e=>((e,t)=>{const a=Object.assign(Object.assign({},r),{[e]:{key:r[e].key,value:t}});n(a),o(a)})(a,e.target.value)}),t.createElement("button",{disabled:e.disabled,type:"button",className:"mrf-flex mrf-btn mrf-btn_red mrf-btn_sm mrf-ml_10",onClick:()=>(e=>{const t=Object.fromEntries(Object.entries(r).filter((([t,r])=>t!==e)));n(t),o(t)})(a)},t.createElement(Tt,null)),c===Object.keys(r).length-1&&t.createElement("button",{disabled:e.disabled,type:"button",className:"mrf-flex mrf-btn mrf-btn_blue mrf-btn_sm mrf-ml_5",onClick:l},t.createElement(Vt,null))))))},zt={javascript:T,css:W,json:z,html:M,markdown:A};function Wt(e,t,r=1,n=!1,a=!0,o=!1,l={height:"-1",minHeight:"300px",maxHeight:"-1",width:"-1",minWidth:"-1",maxWidth:"-1"},i,s){const c=L.theme({"&":Object.assign({},l)}),m=[a?G():G({formatNumber:()=>""}),Q(),D(),q(),zt[t](),H(),F(),$(),P.allowMultipleSelections.of(!0),ie.fallback,X(),Z(),ne(),le(),o?R():void 0,te(),I.of([...ee,...U,...re,...B,...J,...oe,...ae,...se,K]),ce,c,P.tabSize.of(r),Y.of(" ".repeat(r))].filter((e=>!!e)),u=P.create({extensions:[...m,L.updateListener.of((e=>{try{if(e.docChanged){const t=e.state.doc.toString();null==i||i(t)}}catch(e){}})),L.editable.of(!n)],doc:null==s?"":"object"==typeof s?s.value:s});return new L({state:u,parent:e})}function At({onChange:e,value:t,mode:o="javascript",tabSize:l=2,readOnly:s=!1,showLinesNumber:c=!0,highlightLine:m=!1,themeStyle:u={height:"-1",minHeight:"300px",maxHeight:"-1",width:"-1",minWidth:"-1",maxWidth:"-1"},className:p,setRef:f}){const d=n(),[b,y]=i();return a((()=>{const r=Wt(d.current,o,l,s,c,m,u,e,t);d.current.addEventListener("keydown",(e=>{e.stopImmediatePropagation()})),f&&f(r),r.dispatch({changes:{from:0,to:r.state.doc.length,insert:null==t?"":"object"==typeof t?JSON.stringify(t,null,2):t}}),y(r)}),[]),a((()=>{b&&("object"==typeof t?JSON.stringify(t,null,2):t)!==b.state.doc.toString()&&b.dispatch({changes:{from:0,to:b.state.doc.length,insert:null==t?"":"object"==typeof t?JSON.stringify(t,null,2):t}})}),[t]),r.createElement("div",{className:p,ref:d})}const Lt=new me.Converter({omitExtraWLInCodeBlocks:!0,ghCompatibleHeaderId:!0,parseImgDimensions:!0,simplifiedAutoLink:!0,tables:!0,tasklists:!0,requireSpaceBeforeHeadingText:!0,ghMentions:!0,emoji:!0,ghMentionsLink:"/{u}"}),Dt=e=>{const[t,o]=i(e.preview||!1),l=n();a((()=>{t&&c()}),[t,e.value]);const s=[{name:"Add header",icon:"heading",inject:e=>[{from:e.from,insert:"# "}]},{name:"Add bold text",icon:"bold",inject:e=>[{from:e.from,insert:"**"},{from:e.to,insert:"**"}]},{name:"Add italic text",icon:"italic",inject:e=>[{from:e.from,insert:"*"},{from:e.to,insert:"*"}]},{name:"Add strikethrough text",icon:"strikethrough",inject:e=>[{from:e.from,insert:"~~"},{from:e.to,insert:"~~"}]},{name:"Add link",icon:"link",inject:e=>[{from:e.from,insert:"["},{from:e.to,insert:"](url)"}]},{name:"Add code",icon:"code",inject:e=>[{from:e.from,insert:"```\n"},{from:e.to,insert:"\n```\n"}]},{name:"Add quotes",icon:"quote-right",inject:e=>[{from:e.from,insert:"> "}]},{name:"Add image",icon:"image",inject:e=>[{from:e.from,insert:"!["},{from:e.to,insert:"](image-url)"}]},{name:"Add unordered list",icon:"list-ul",inject:e=>[{from:e.from,insert:"* "}]},{name:"Add ordered list",icon:"list-ol",inject:e=>[{from:e.from,insert:"1. "}]},{name:"Add check list",icon:"tasks",inject:e=>[{from:e.from,insert:"* [ ] "}]}],c=()=>{const e=[...document.getElementsByClassName("mrf-preview")];e.length>0&&[...e[0].querySelectorAll("pre code")].forEach((e=>ue.highlightElement(e)))};return r.createElement("div",{className:N(e.className)},!e.readOnly&&r.createElement("div",{style:{marginBottom:10}},r.createElement("div",null,r.createElement("div",null,r.createElement("button",{type:"button",className:"mrf-btn mrf-btn_sm",style:{color:t?"white":"#7f96af",backgroundColor:t?"#7f96af":"white"},onClick:()=>o(!1)},"Write"),r.createElement("button",{type:"button",className:"mrf-btn mrf-btn_sm mrf-ml_5",style:{color:t?"#7f96af":"white",backgroundColor:t?"white":"#7f96af"},onClick:()=>o(!0)},"Preview"))),r.createElement("div",{className:"mrf-flex mrf-flexWrap"},r.createElement(r.Fragment,null,s.map(((e,t)=>r.createElement("button",{type:"button",className:N("mrf-btn_for_descriptionToolbar"),"aria-label":e.name,title:e.name,key:`toolbar-btn-${t}`,onClick:()=>{const t=l.current;t.dispatch(t.state.changeByRange((t=>({changes:e.inject(t),range:t})))),t.focus()}},r.createElement("i",{className:`fas fa-${e.icon}`})))),e.actions&&e.actions((e=>{const t=l.current;t.dispatch(t.state.changeByRange((t=>({changes:[{from:t.from,insert:e}],range:t})))),t.focus()}))))),!t&&r.createElement(At,Object.assign({},e,{mode:"markdown",setRef:e=>l.current=e})),t&&r.createElement("div",{className:"mrf-preview",dangerouslySetInnerHTML:{__html:Lt.makeHtml(e.value||"")}}))};function Ft({onChange:e,value:t,mode:o="javascript",tabSize:l=2,readOnly:i=!1,showLinesNumber:s=!0,highlightLine:c=!1,themeStyle:m={height:"-1",minHeight:"-1",maxHeight:"-1",width:"-1",minWidth:"-1",maxWidth:"-1"}}){const u=n();return a((()=>{Wt(u.current,o,l,i,s,c,m,(t=>{null==e||e(t.replace(/\n/g,""))}),t),u.current.addEventListener("keydown",(e=>{e.stopImmediatePropagation()}))}),[]),r.createElement("div",{ref:u,style:{flex:1,overflow:"hidden"}})}function $t(){return $t=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},$t.apply(this,arguments)}function Rt(e,t){if(null==e)return{};var r,n,a=function(e,t){if(null==e)return{};var r,n,a={},o=Object.keys(e);for(n=0;n<o.length;n++)r=o[n],t.indexOf(r)>=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n<o.length;n++)r=o[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var It=l((function(e,t){var n=e.color,a=void 0===n?"currentColor":n,o=e.size,l=void 0===o?24:o,i=Rt(e,["color","size"]);return r.createElement("svg",$t({ref:t,xmlns:"http://www.w3.org/2000/svg",width:l,height:l,viewBox:"0 0 24 24",fill:"none",stroke:a,strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},i),r.createElement("circle",{cx:"12",cy:"12",r:"10"}),r.createElement("path",{d:"M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3"}),r.createElement("line",{x1:"12",y1:"17",x2:"12.01",y2:"17"}))}));It.propTypes={color:_.string,size:_.oneOfType([_.string,_.number])},It.displayName="HelpCircle";const qt=({entry:e,realEntry:t,children:n,render:a,functionalProperty:o,step:l,informations:i,className:s})=>{const{formState:c}=p();if("object"==typeof e)return n;const m=e.split(".").reduce(((e,t)=>e&&e[t]),c.errors),u=e.split(".").reduce(((e,t)=>e&&e[t]),c.dirtyFields),f=e.split(".").reduce(((e,t)=>e&&e[t]),c.touchedFields),d=c.isSubmitted||u||f;if(!o(e,void 0===(null==l?void 0:l.visible)||l.visible,i,m))return null;const b=o(e,null===(null==l?void 0:l.label)?null:(null==l?void 0:l.label)||t||e,i),y=fe();return a?a({entry:e,label:b,error:m,help:null==l?void 0:l.help,children:n}):r.createElement("div",{className:`mrf-mt_10 ${s||""}`,style:{position:"relative"}},b&&r.createElement("label",{className:"mrf-flex mrf-ai_center mrf-mb_5",htmlFor:e},r.createElement("span",null,b),(null==l?void 0:l.help)&&r.createElement(r.Fragment,null,r.createElement(pe,{html:!0,place:"bottom",id:y}),r.createElement("span",{className:"mrf-flex mrf-ai_center","data-html":!0,"data-tip":null==l?void 0:l.help,"data-for":y},r.createElement(It,{style:{color:"gray",width:17,marginLeft:".5rem",cursor:"help"}})))),n,m&&r.createElement("div",{className:N("mrf-feedback",{"mrf-txt_red":!!d})},m.message))},Bt=t.memo((e=>e.render?e.render(Object.assign(Object.assign({},e.field),{error:e.error,informations:e.informations})):e.children),((e,t)=>!t.deactivateReactMemo&&(e.field.value===t.field.value&&t.errorDisplayed===e.errorDisplayed&&Qe(t.step)===Qe(e.step)))),Ht=e=>{const{step:r,entry:n,realEntry:a,children:o,component:l,errorDisplayed:i=!1,informations:s,deactivateReactMemo:c,inputWrapper:m}=e,{field:u}=f({name:n}),{getValues:d,setValue:b,formState:{errors:y}}=p(),v=n.split(".").reduce(((e,t)=>e&&e[t]),y),h=(e,t)=>"function"==typeof t?t({rawValues:d(),value:d(e),informations:s,error:v,getValue:e=>d(e)}):t,g=Object.assign(Object.assign({name:u.name},r.props),{id:n,readOnly:h(n,r.disabled)?"readOnly":null,placeholder:r.placeholder,onChange:e=>{const t=e?e.target?e.target.value||null:e:r.type===de.bool||r.type===de.number&&0===u.value?e:null;u.onChange(t),$e(r.onChange).map((e=>e({rawValues:d(),value:t,setValue:b})))},value:u.value});return t.createElement(qt,{key:`collapse-${n}`,entry:n,realEntry:a,functionalProperty:h,step:r,render:m,informations:s},t.createElement(Bt,{render:r.render,step:r,field:Object.assign({setValue:(e,t)=>b(e,t),rawValues:d(),getValue:e=>d(e)},u),error:v,errorDisplayed:i,informations:s,deactivateReactMemo:c},l?l(u,g):t.cloneElement(o,Object.assign({},g))))};function Jt(){return Jt=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},Jt.apply(this,arguments)}function Ut(e,t){if(null==e)return{};var r,n,a=function(e,t){if(null==e)return{};var r,n,a={},o=Object.keys(e);for(n=0;n<o.length;n++)r=o[n],t.indexOf(r)>=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n<o.length;n++)r=o[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var Kt=l((function(e,t){var n=e.color,a=void 0===n?"currentColor":n,o=e.size,l=void 0===o?24:o,i=Ut(e,["color","size"]);return r.createElement("svg",Jt({ref:t,xmlns:"http://www.w3.org/2000/svg",width:l,height:l,viewBox:"0 0 24 24",fill:"none",stroke:a,strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},i),r.createElement("polyline",{points:"3 6 5 6 21 6"}),r.createElement("path",{d:"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6m3 0V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2"}),r.createElement("line",{x1:"10",y1:"11",x2:"10",y2:"17"}),r.createElement("line",{x1:"14",y1:"11",x2:"14",y2:"17"}))}));Kt.propTypes={color:_.string,size:_.oneOfType([_.string,_.number])},Kt.displayName="Trash2";const Yt=({entry:e,step:t,component:n,disabled:a})=>{const{getValues:o,setValue:l,control:i,trigger:s,formState:c}=p(),m=o(e),u=e.split(".").reduce(((e,t)=>e&&e[t]),c.errors),f=e.split(".").reduce(((e,t)=>e&&e[t]),c.dirtyFields),b=e.split(".").reduce(((e,t)=>e&&e[t]),c.touchedFields),y=!!u&&(c.isSubmitted||f||b),{fields:v,append:h,remove:g}=d({control:i,name:e});return r.createElement(r.Fragment,null,v.map(((t,o)=>r.createElement("div",{key:t.id},r.createElement("div",{className:"mrf-ai_center mrf-mt_5",style:{position:"relative"}},r.createElement("div",{style:{width:"95%"}},n(Object.assign(Object.assign({key:t.id},t),{defaultValue:m[o]}),o)),r.createElement("button",{type:"button",style:{position:"absolute",top:"2px",right:0},className:"mrf-btn mrf-btn_red mrf-btn_sm mrf-ml_5",disabled:a,onClick:()=>{g(o),s(e)}},r.createElement(Kt,{size:16})))))),r.createElement("div",{className:"mrf-flex mrf-jc_flex_end"},r.createElement("button",{type:"button",className:N("mrf-btn","mrf-btn_blue","mrf-btn_sm","mrf-mt_5",{"mrf-input__invalid":!!y}),onClick:()=>{const r=t.type===de.object?et(t.flow,t.schema):Ze();h({value:t.addableDefaultValue||r}),$e(t.onChange).map((t=>t({rawValues:o(),value:o(e),setValue:l})))},disabled:a},"Add"),u&&r.createElement("div",{className:"mrf-invalid-feedback"},u.message)))},Gt=e=>e.render?e.render(Object.assign(Object.assign({},e),{error:e.error})):e.children,Qt=e=>{let{entry:t,schema:n,inputWrapper:a,httpClient:o,functionalProperty:l}=e;const{formState:{errors:i,dirtyFields:s,touchedFields:c}}=p(),m=nt(t).some((e=>!!i[e]&&(s[e]||c[e])));return r.createElement(xt,Object.assign({},t,{errored:m}),t.flow.map(((t,i)=>{if("object"==typeof t)return r.createElement(Qt,Object.assign({key:i},e,{entry:t}));const s=n[t];if(!s&&"string"==typeof t)return console.error(`no step found for the entry "${t}" in the given schema. Your form might not work properly. Please fix it`),null;const c={path:t};return r.createElement(Xt,{entry:t,step:s,schema:n,inputWrapper:a,httpClient:o,defaultValue:null==s?void 0:s.defaultValue,functionalProperty:l,informations:c})})))},Xt=e=>{let{entry:t,realEntry:o,step:l,schema:c,inputWrapper:m,httpClient:u,defaultValue:f,index:d,functionalProperty:y,informations:v}=e;const{formState:{errors:h,dirtyFields:g,touchedFields:_,isSubmitted:V},control:S,getValues:P,setValue:T,watch:M}=p(),[z,W]=i(Qe(P())),A=t.split(".").reduce(((e,t)=>e&&e[t]),h),L=t.split(".").reduce(((e,t)=>e&&e[t]),g),D=t.split(".").reduce(((e,t)=>e&&e[t]),_),F=!!A&&(V||L||D);if(l=l,l.onAfterChange){const e=M(),r=t.replace("[",".").replace("]","").split(".").reduce(((e,t)=>e&&e[t]),e)||{},o=(e=>{const t=n();return a((()=>{t.current=e}),[e]),t.current})(rt(r,c)),i=rt(r,c);(!O(i,o)||void 0!==i&&void 0===o)&&l.onAfterChange({entry:t,value:P(t),rawValues:P(),previousValue:o,getValue:e=>P(e),setValue:T,onChange:e=>T(t,e),informations:v})}const $=s((()=>{const e="function"==typeof l.visible,t="function"==typeof l.disabled,r="function"==typeof l.label;return e||t||r||!!l.render||!!l.conditionalSchema}),[Qe(c)]);if($){const e=M(),t=Qe(e);t!==z&&W(t)}if(l.array)return r.createElement(Ht,{step:l,entry:t,realEntry:o,errorDisplayed:F,informations:v,deactivateReactMemo:$,inputWrapper:m},r.createElement(Yt,{entry:t,step:l,disabled:y(t,l.disabled||!1,v,A),component:(e,n)=>{var a,i,s,p,f,d,b,h;return r.createElement(Xt,{entry:`${t}.${n}.value`,step:Object.assign(Object.assign({},c[o||t]),{label:(null===(a=l.item)||void 0===a?void 0:a.label)||null,render:null===(i=l.item)||void 0===i?void 0:i.render,onChange:null===(s=l.item)||void 0===s?void 0:s.onChange,array:(null===(p=l.item)||void 0===p?void 0:p.array)||!1,onAfterChange:null===(f=l.item)||void 0===f?void 0:f.onAfterChange,visible:null===(d=l.item)||void 0===d?void 0:d.visible,disabled:null===(b=l.item)||void 0===b?void 0:b.disabled}),schema:c,inputWrapper:m,httpClient:u,defaultValue:null===(h=e.defaultValue)||void 0===h?void 0:h.value,index:n,functionalProperty:y,informations:{path:void 0,parent:v,index:n}})}}));switch(l.type){case de.string:switch(l.format){case be.text:return r.createElement(Ht,{step:l,entry:t,realEntry:o,errorDisplayed:F,informations:v,deactivateReactMemo:$,inputWrapper:m},r.createElement("textarea",{className:N("mrf-input",l.className,{"mrf-mrf-input__invalid":!!F})}));case be.code:case be.singleLineCode:const e=l.format===be.code?At:Ft;return r.createElement(Ht,{step:l,entry:t,realEntry:o,errorDisplayed:F,informations:v,deactivateReactMemo:$,inputWrapper:m},r.createElement(e,{className:N(null==l?void 0:l.className,{"mrf-input__invalid":!!A})}));case be.markdown:return r.createElement(Ht,{step:l,entry:t,realEntry:o,errorDisplayed:F,informations:v,deactivateReactMemo:$,inputWrapper:m},r.createElement(Dt,{className:N(l.className,{"mrf-input__invalid":!!F})}));case be.buttonsSelect:case be.select:return r.createElement(Ht,{step:l,entry:t,realEntry:o,errorDisplayed:F,informations:v,deactivateReactMemo:$,inputWrapper:m},r.createElement(Ct,Object.assign({className:N("mrf-flex_grow_1",l.className,{"mrf-input__invalid":!!F}),disabled:y(t,l.disabled||!1,v,A)},l.props,{possibleValues:l.options,httpClient:u,isMulti:l.isMulti,createOption:l.createOption,onCreateOption:l.onCreateOption,transformer:l.transformer,buttons:l.format===be.buttonsSelect,optionsFrom:l.optionsFrom})));default:return r.createElement(Ht,{step:l,entry:t,realEntry:o,errorDisplayed:F,informations:v,deactivateReactMemo:$,inputWrapper:m},r.createElement("input",{type:l.format||"text",className:N("mrf-input",l.className,{"mrf-input__invalid":!!F})}))}case de.number:switch(l.format){case be.buttonsSelect:case be.select:return r.createElement(Ht,{step:l,entry:t,realEntry:o,errorDisplayed:F,informations:v,deactivateReactMemo:$,inputWrapper:m},r.createElement(Ct,Object.assign({className:N("mrf-content",l.className,{"mrf-input__invalid":!!F})},l.props,{possibleValues:l.options,httpClient:u,isMulti:l.isMulti,createOption:l.createOption,onCreateOption:l.onCreateOption,transformer:l.transformer,buttons:l.format===be.buttonsSelect,optionsFrom:l.optionsFrom})));default:return r.createElement(Ht,{step:l,entry:t,realEntry:o,errorDisplayed:F,informations:v,deactivateReactMemo:$,inputWrapper:m},r.createElement("input",{type:l.format||"number",className:N("mrf-input",l.className,{"mrf-input__invalid":!!F})}))}case de.bool:return r.createElement(Ht,{step:l,entry:t,realEntry:o,errorDisplayed:F,informations:v,deactivateReactMemo:$,inputWrapper:m},r.createElement(vt,{className:l.className,errorDisplayed:F}));case de.object:const e=P(t),n=Ye(l.defaultValue)?l.defaultValue:et(l.flow,l.schema);switch(l.format){case be.buttonsSelect:case be.select:return r.createElement(Ht,{step:Object.assign(Object.assign({},l),{defaultValue:e||n}),entry:t,realEntry:o,errorDisplayed:F,informations:v,deactivateReactMemo:$,inputWrapper:m},r.createElement(Ct,Object.assign({className:N("mrf-flex_grow_1",l.className,{"mrf-input__invalid":!!F})},l.props,{possibleValues:l.options,httpClient:u,isMulti:l.isMulti,createOption:l.createOption,onCreateOption:l.onCreateOption,transformer:l.transformer,buttons:l.format===be.buttonsSelect,optionsFrom:l.optionsFrom})));case be.form:const a=$e(l.flow).getOrElse($e(l.schema).map((e=>Object.keys(e))).getOrElse([]));return r.createElement(Ht,{step:Object.assign(Object.assign({},l),{defaultValue:e||n}),entry:t,realEntry:o,errorDisplayed:F,informations:v,deactivateReactMemo:$,inputWrapper:m},r.createElement(Gt,{render:l.render,rawValues:P(),value:P(t),onChange:e=>T(t,e,{shouldValidate:!0}),setValue:(e,t)=>T(e,t),getValue:e=>P(e),informations:v},r.createElement(Zt,{schema:l.schema,flow:a,step:l,parent:t,inputWrapper:m,maybeCustomHttpClient:u,value:P(t)||n,functionalProperty:y,errorDisplayed:F,informations:v})));case be.code:return r.createElement(Ht,{step:Object.assign(Object.assign({},l),{defaultValue:e||n}),entry:t,realEntry:o,errorDisplayed:F,informations:v,deactivateReactMemo:$,inputWrapper:m,component:(e,t)=>r.createElement(At,Object.assign({},t,{className:N(null==l?void 0:l.className,{"mrf-input__invalid":!!A}),onChange:t=>{let r;try{r=JSON.parse(t)}catch(e){r=t}e.onChange(r),$e(null==l?void 0:l.onChange).map((e=>e({rawValues:P(),value:r,setValue:T})))},value:null===e.value?null:"object"==typeof e.value?JSON.stringify(e.value,null,2):e.value}))});default:return r.createElement(Ht,{step:Object.assign(Object.assign({},l),{defaultValue:e||n}),entry:t,realEntry:o,errorDisplayed:F,informations:v,deactivateReactMemo:$,inputWrapper:m},r.createElement(Mt,{className:N(l.className,{"mrf-input__invalid":!!F})}))}case de.date:switch(l.format){case be.datetime:return r.createElement(Ht,{step:l,entry:t,realEntry:o,informations:v,deactivateReactMemo:$,inputWrapper:m,component:e=>r.createElement(E,{dateAdapter:j},r.createElement(k,{value:e.value,onChange:t=>{e.onChange(t),$e(l.onChange).map((e=>e({rawValues:P(),value:t,setValue:T})))},renderInput:e=>r.createElement(C,Object.assign({},e))}))});case be.time:return r.createElement(Ht,{step:l,entry:t,realEntry:o,informations:v,deactivateReactMemo:$,inputWrapper:m,component:e=>r.createElement(E,{dateAdapter:j},r.createElement(x,{value:e.value,onChange:t=>{e.onChange(t),$e(l.onChange).map((e=>e({rawValues:P(),value:t,setValue:T})))},renderInput:e=>r.createElement(C,Object.assign({},e))}))});default:return r.createElement(Ht,{step:l,entry:t,realEntry:o,informations:v,deactivateReactMemo:$,inputWrapper:m,component:e=>r.createElement(E,{dateAdapter:j},r.createElement(w,{value:e.value,onChange:t=>{e.onChange(t),$e(l.onChange).map((e=>e({rawValues:P(),value:t,setValue:T})))},renderInput:e=>r.createElement(C,Object.assign({},e))}))})}case de.file:return r.createElement(b,{name:t,control:S,render:({field:e})=>r.createElement(Ht,{step:l,entry:t,realEntry:o,errorDisplayed:F,informations:v,deactivateReactMemo:$,inputWrapper:m},r.createElement((({onChange:n})=>{const[a,o]=i(!1),[s,c]=i(void 0),m=e.value||[];return r.createElement("div",{className:N("mrf-flex","mrf-ai_center",null==l?void 0:l.className,{"mrf-input__invalid":!!A})},r.createElement("input",{ref:e=>c(e),type:"file",multiple:!0,className:"mrf-d_none",onChange:e=>{const t=e.target.files;o(!0),n&&n(t?[...t]:[]),o(!1)}}),r.createElement("button",{type:"button",className:"mrf-btn mrf-btn_sm mrf-flex mrf-ai_center",disabled:a||y(t,(null==l?void 0:l.disabled)||!1,v,A),onClick:()=>{null==s||s.click()}},a&&r.createElement(it,null),!a&&r.createElement(mt,null),r.createElement("span",{className:"mrf-ml_5"},"Select file(s)")),r.createElement("span",{className:"mrf-ml_5"},m.length<=0?"No files selected":m.map((e=>e.name)).join(" , ")))}),null))});case de.json:return r.createElement(Ht,{step:l,entry:t,realEntry:o,informations:v,deactivateReactMemo:$,inputWrapper:m,component:(e,t)=>r.createElement(At,Object.assign({},t,{className:N(null==l?void 0:l.className,{"mrf-input__invalid":!!A}),onChange:t=>{e.onChange(t),$e(null==l?void 0:l.onChange).map((e=>e({rawValues:P(),value:t,setValue:T})))},value:e.value}))});default:return null}},Zt=({schema:e,flow:t,parent:n,inputWrapper:a,maybeCustomHttpClient:o,errorDisplayed:l,value:s,step:c,functionalProperty:m,informations:f})=>{var d;const{getValues:b,control:y}=p(),[v,h]=i(!!c.collapsed);u({name:(null===(d=null==c?void 0:c.conditionalSchema)||void 0===d?void 0:d.ref)||"",control:y});const g=$e(c.conditionalSchema).map((e=>{const t=$e(e.ref).map((e=>b(e))).getOrNull(),r=b(),n=$e(e.switch.find((e=>"function"==typeof e.condition?e.condition({rawValues:r,ref:t}):e.condition===t))).orElse(e.switch.find((e=>e.default))).getOrElse({schema:{},flow:[]});return{schema:n.schema,flow:n.flow||Object.keys(n.schema)}})).getOrElse({schema:e,flow:t}),O=g.flow.reduce(((e,t)=>[...e,{step:"string"==typeof t?g.schema[t]:g.schema[t.label],entry:t}]),[]),j=O.length>=1&&null!==c.label;return r.createElement("div",{className:N(c.className,{"mrf-nestedform__border":j,"mrf-border__error":!!l}),style:{position:"relative"}},!!c.collapsable&&g.flow.length>1&&v&&r.createElement(ft,{size:30,className:"mrf-cursor_pointer",style:{position:"absolute",top:-35,right:0,zIndex:100},strokeWidth:"2",onClick:()=>h(!v)}),!!c.collapsable&&g.flow.length>1&&!v&&r.createElement(yt,{size:30,className:"mrf-cursor_pointer",style:{position:"absolute",top:-35,right:0,zIndex:100},strokeWidth:"2",onClick:()=>h(!v)}),v&&!!c.collapsable&&"function"==typeof c.collapsable&&c.collapsable({rawValues:b(),getValue:e=>b(e),value:s}),("function"!=typeof c.collapsable||!v)&&O.map((({step:t,entry:l},i)=>v&&!t.visibleOnCollapse?null:"object"==typeof l?r.createElement(Qt,{key:i,entry:l,schema:e,inputWrapper:a,httpClient:o,functionalProperty:m}):t||"string"!=typeof l?r.createElement(Xt,{key:`step.${l}.${i}`,entry:`${n}.${l}`,realEntry:l,step:g.schema[l],schema:g.schema,inputWrapper:a,httpClient:o,defaultValue:s&&s[l],functionalProperty:m,informations:{path:l,parent:f}}):(console.error(`no step found for the entry "${l}" in the given schema. Your form might not work properly. Please fix it`),null))))},er=e=>{var t,n,a,o,l,i,s,c,m,u,p,f,d,b;if(e.render)return e.render({reset:e.reset,valid:e.valid});const y=void 0===(null===(n=null===(t=e.actions)||void 0===t?void 0:t.submit)||void 0===n?void 0:n.display)||!!(null===(o=null===(a=e.actions)||void 0===a?void 0:a.submit)||void 0===o?void 0:o.display);return r.createElement("div",{className:"mrf-flex mrf-jc_end mrf-mt_5"},(null===(i=null===(l=e.actions)||void 0===l?void 0:l.cancel)||void 0===i?void 0:i.display)&&r.createElement("button",{className:"mrf-btn mrf-btn_red",type:"button",onClick:()=>{var t,r;return null===(r=null===(t=e.actions)||void 0===t?void 0:t.cancel)||void 0===r?void 0:r.action()}},(null===(c=null===(s=e.actions)||void 0===s?void 0:s.cancel)||void 0===c?void 0:c.label)||"Cancel"),(null===(u=null===(m=e.actions)||void 0===m?void 0:m.reset)||void 0===u?void 0:u.display)&&r.createElement("button",{className:"mrf-btn mrf-btn_red",type:"button",onClick:e.reset},(null===(f=null===(p=e.actions)||void 0===p?void 0:p.reset)||void 0===f?void 0:f.label)||"Reset"),y&&r.createElement("button",{className:"mrf-btn mrf-btn_green mrf-ml_10",type:"submit"},(null===(b=null===(d=e.actions)||void 0===d?void 0:d.submit)||void 0===b?void 0:b.label)||"Save"))},tr=r.forwardRef((function({schema:t,flow:n,value:o,inputWrapper:l,onSubmit:s,onError:u=(()=>{}),footer:p,style:f={},className:d,options:b={}},h){const g=n||Object.keys(t),O=(e,t)=>b.httpClient?b.httpClient(e,t):fetch(e,{method:t,headers:{Accept:"application/json","Content-Type":"application/json"}}),j=et(g,t,o),E=y({resolver:(r,n,a)=>m((r=>{const{shape:n,dependencies:a}=Je(g,t,[],r);return e.object().shape(n,a)})(r))(r,n,a),shouldFocusError:!1,mode:"onChange",defaultValues:tt(o,j,n,t)}),[w,x]=i(!1),{handleSubmit:k,reset:C,trigger:_}=E,{getValues:N}=E;a((()=>{b.showErrorsOnStart&&_()}),[_,w]),Xe((()=>{C(Object.assign({},tt(o,j,n,t)))}),[o,t,n]);const V=(e,t,r,n)=>"function"==typeof t?t({rawValues:N(),value:N(e),informations:r,getValue:e=>N(e),error:n}):t;return c(h,(()=>({handleSubmit:()=>k((e=>{const r=rt(e,t);s(r)}),u)(),trigger:_,methods:Object.assign(Object.assign({},E),{data:()=>rt(N(),t)})}))),r.createElement(v,Object.assign({},E),!!b.watch&&r.createElement(at,{options:b,control:E.control,schema:t,onSubmit:s,handleSubmit:k}),r.createElement("form",{className:d||"mrf-pr_15 mrf-w_100",onSubmit:k((e=>{const r=rt(e,t);s(r)}),u)},g.map(((e,n)=>{if("object"==typeof e)return r.createElement(Qt,{key:n,entry:e,schema:t,inputWrapper:l,httpClient:O,functionalProperty:V});const a=t[e];if(!a&&"string"==typeof e)return console.error(`no step found for the entry "${e}" in the given schema. Your form might not work properly. Please fix it`),null;const o={path:e};return r.createElement(Xt,{key:n,entry:e,step:a,schema:t,inputWrapper:l,httpClient:O,functionalProperty:V,informations:o})})),r.createElement(er,{render:p,reset:()=>C(j),valid:k((e=>s(rt(e,t))),u),actions:b.actions})))}));export{vt as BooleanInput,At as CodeInput,xt as Collapse,tr as Form,Dt as MarkdownInput,Mt as ObjectInput,Ct as SelectInput,Ft as SingleLineCode,Fe as constraints,be as format,de as type};
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@maif/react-forms",
3
3
  "description": "Build react safe forms as fast as possible",
4
- "version": "1.2.12",
4
+ "version": "1.2.16",
5
5
  "main": "lib/index.js",
6
6
  "types": "lib/index.d.ts",
7
7
  "source": "src/index.ts",
@@ -33,7 +33,11 @@
33
33
  "scripts": {
34
34
  "build": "tsc --emitDeclarationOnly && NODE_ENV=production rollup -c",
35
35
  "dev": "tsc --emitDeclarationOnly && rollup -c -w",
36
- "test": "jest",
36
+ "test": "jest && npm run cypress:headless",
37
+ "sandbox": "cd examples && npm run start:test",
38
+ "cypress:run-headless": "cypress run",
39
+ "cypress:open": "cypress open",
40
+ "cypress:headless": "start-server-and-test sandbox http-get://127.0.0.1:3000/react-forms cypress:run-headless",
37
41
  "tdd": "jest --watch"
38
42
  },
39
43
  "jest": {
@@ -59,18 +63,20 @@
59
63
  },
60
64
  "devDependencies": {
61
65
  "@babel/cli": "^7.17.6",
62
- "@babel/core": "^7.17.8",
63
- "@babel/preset-env": "^7.16.11",
66
+ "@babel/core": "^7.18.9",
67
+ "@babel/preset-env": "^7.18.9",
64
68
  "@babel/preset-react": "^7.16.7",
69
+ "@babel/preset-typescript": "^7.18.6",
65
70
  "@rollup/plugin-babel": "^5.3.1",
66
71
  "@rollup/plugin-commonjs": "^21.0.2",
67
72
  "@rollup/plugin-json": "^4.1.0",
68
73
  "@rollup/plugin-node-resolve": "^13.1.3",
69
74
  "@rollup/plugin-typescript": "^8.3.2",
75
+ "@testing-library/cypress": "^8.0.3",
70
76
  "@testing-library/jest-dom": "^5.11.4",
71
- "@testing-library/react": "^11.1.0",
77
+ "@testing-library/react": "^11.2.7",
72
78
  "@testing-library/user-event": "^12.1.10",
73
- "@types/jest": "^26.0.24",
79
+ "@types/jest": "^28.1.6",
74
80
  "@types/lodash.debounce": "4.0.7",
75
81
  "@types/node": "^16.3.0",
76
82
  "@types/object-hash": "^2.2.1",
@@ -80,13 +86,16 @@
80
86
  "@types/uuid": "^8.3.4",
81
87
  "@typescript-eslint/eslint-plugin": "^5.26.0",
82
88
  "@typescript-eslint/parser": "^5.26.0",
89
+ "babel-jest": "^28.1.3",
83
90
  "babel-loader": "8.2.2",
84
91
  "chai": "^4.3.4",
85
92
  "chai-as-promised": "^7.1.1",
86
93
  "cross-env": "5.0.1",
87
94
  "css-loader": "5.2.0",
95
+ "cypress": "^10.3.1",
88
96
  "dirty-chai": "^2.0.1",
89
- "jest": "^27.0.6",
97
+ "jest": "^28.1.3",
98
+ "jest-environment-jsdom": "^28.1.3",
90
99
  "react": "^17.0.2",
91
100
  "react-dom": "^17.0.2",
92
101
  "rollup": "^2.70.1",
@@ -103,6 +112,7 @@
103
112
  "sass": "^1.52.1",
104
113
  "sinon": "^11.1.2",
105
114
  "sinon-chai": "^3.7.0",
115
+ "start-server-and-test": "^1.14.0",
106
116
  "style-loader": "2.0.0",
107
117
  "transform-loader": "0.2.4",
108
118
  "typescript": "^4.3.5"